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

2024-04-20 04:28:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试编写几个程序来处理几种语言的文本分析,包括拉丁语、古希腊语和汉语。其中之一就是分析拉丁语中的一个单词,把它分解成它的组成音节,然后找出哪个音节是重读的,并给那个音节的元音加上一个尖锐的重音。对于长元音,如“ā”,需要使用组合锐音符“́”,以产生“́”。但是,当我将组合重音('\u0301')的unicode值放在要添加到的字符后面的字符串中时,它不会像打印字符串时那样组合字符,而是将它们彼此相邻放置。另外,当我试图显示非西方Unicode字符,如日本平假名、片假名或中日韩统一象形文字时,我得到的只是当系统无法正确显示字符时在框中得到的问号符号。我没有这些问题,结合字符或中日韩统一象形文字,因为他们只是在谷歌浏览器或微软Word的工作,例如罚款。我在64位的笔记本电脑上运行Python3。另外,如果他们提出Sqlite3,我如何处理这些问题?你知道吗


Tags: 字符串文本程序语言系统unicode字符单词
2条回答

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

>>> from unicodedata import normalize
>>> char = 'a'
>>> accent = '\u0301'
>>> normalize("NFC", char + accent)
'á'  # this is a length 1 string

就ā́而言,我认为在Python中最短的长度是length 2('\u0101\u0301'),这取决于终端仿真器在渲染时正确组合字母的glyph和重音符号。你知道吗

至于您提到的日文字符不能正确呈现的问题(当系统不能正确显示字符时,在框中打问号),这不是编程或编码的问题,您只需要安装适当的glyph和字体。在linux上我使用GNU Unifont,我不确定在windows10上使用什么。你知道吗

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

相关问题 更多 >