我正在使用 Python 2.7 并输入以下代码:
print u'\u0cb5\u0ccd\u0c87'
由于我的 Unicode 字符串包含卡纳达语辅音“v”,后跟卡纳达语元音“i”,因此我希望输出是代表音节/akshara“vi”的单个卡纳达语字符,但我得到的是 ವ್ಇ。我该如何解决这个问题并获取“vi”的字符?
我相信您没有正确编码字符串。我希望这就是您想要的:
>>> print u'\u0cb5\u0CBF'
ವಿ
您所做的就是输出(使用 Unicode 分配给这些字符的全名):
我可以看到其中的逻辑,但这不是 Unicode 的工作原理。 virama 应该仅用于辅音簇或者如果您有一个以辅音结尾的序列。要将音节与元音组合在一起,您必须将音节与元音的组合形式一起使用:
卡纳达语元音符号 I 是字母“I”的组合形式,而卡纳达语字母 I 是同一字母的非组合形式。
我建议阅读Unicode 标准第 9 章,以获取有关如何处理南亚文字的完整说明。 第 10 章 也很有用。
0cb5
是 Unicode 字符 'KANNADA LETTER VA' (U+0CB5) ವ 。所以Python打印ವ್ಇ是正确的。
它应该打印卡纳达语字符 VA、VIRAMA,我根据这里的最新表格。