Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中Unicode字符的显示问题(组合字符、假名字符等)_Python_Python 3.x_Unicode_Utf 8_Python Unicode - Fatal编程技术网

Python中Unicode字符的显示问题(组合字符、假名字符等)

Python中Unicode字符的显示问题(组合字符、假名字符等),python,python-3.x,unicode,utf-8,python-unicode,Python,Python 3.x,Unicode,Utf 8,Python Unicode,我正在尝试编写几个程序来处理几种语言的文本分析,包括拉丁语、古希腊语和普通话。其中之一就是分析拉丁语中的一个单词,并将其分解为组成音节,然后找出哪个音节重读,并在该音节的元音中添加一个尖锐的重音。对于长元音,如“ā”,这需要使用组合的锐重音“́”来产生“́”。但是,当我将组合重音('\u0301')的unicode值放在我希望添加到的字符之后的字符串中时,它不会像打印字符串时那样组合字符,而是将它们彼此相邻放置。此外,当我尝试显示非西方Unicode字符,如日语平假名、片假名或CJK统一表意文

我正在尝试编写几个程序来处理几种语言的文本分析,包括拉丁语、古希腊语和普通话。其中之一就是分析拉丁语中的一个单词,并将其分解为组成音节,然后找出哪个音节重读,并在该音节的元音中添加一个尖锐的重音。对于长元音,如“ā”,这需要使用组合的锐重音“́”来产生“́”。但是,当我将组合重音('\u0301')的unicode值放在我希望添加到的字符之后的字符串中时,它不会像打印字符串时那样组合字符,而是将它们彼此相邻放置。此外,当我尝试显示非西方Unicode字符,如日语平假名、片假名或CJK统一表意文字时,我得到的只是当系统无法正确显示字符时,在方框中出现的问号符号。我不存在将字符或CJK统一表意文字组合到其他地方的问题,因为它们在Google Chrome或Microsoft Word中工作得很好。我正在64位笔记本电脑上运行Python3和Windows 10。此外,如果他们提出Sqlite3,我如何处理这些问题?

您可以将组合重音规范化为合成形式,例如NFC:

>>> from unicodedata import normalize
>>> char = 'a'
>>> accent = '\u0301'
>>> normalize("NFC", char + accent)
'á'  # this is a length 1 string
就ā́而言,我认为Python中最短的长度是长度2(
'\u0101\u0301'
),这取决于终端仿真器在渲染时正确组合字母和重音符号


至于您提到的日文字符无法正确呈现的问题(当系统无法正确显示字符时,会在框中出现问号),这不是编程或编码的问题,您只需要安装适当的字形和字体。在我使用的linux上,我不确定在Windows 10上使用什么。

这与编程无关。只需移除损坏的终端仿真器并安装一些可以工作的东西,例如


你猜错了,字体没有错。投票人没有核实。关于字体的评论是为了说明用户为什么会看到问题中提到的“方框中的问号符号”。编辑以澄清。那么,无论我做什么,我计算机上的内置命令提示符都无法正确显示字符?这同样适用于我使用的文本编辑器(Atom)吗?