我有两个文件,每个文件都有相同的(Hindi)字,但我为不同来源的每个文件复制了这个字。虽然两个来源的文字在视觉上是相似的,但它们的字节是不同的。文件为here和here。我不确定两种情况下的原始编码,但打开文件,因为UTF-8正确显示字符。
有趣的是,当我使用uniq实用程序执行唯一操作时,只返回一个条目,但是当我将它们放入文件并在vim中对其进行排序时,我得到两个条目。
请解释发生了什么。
更新:
如果您不想打开链接,那么Python文字:'\u091c\u0941\u095c\n'
和'\u091c\u0941\u0921\u093c\n'
和单词看起来像
答案 0 :(得分:2)
Vim说:
:h :sort
有关排序的详细信息取决于所使用的库函数。没有 保证排序服从当前的语言环境。你必须尝试一下。
同时uniq
(我认为gnu coreutils sort
,而不是vim命令)是unicode,知道如何整理文本。
在vim中的字符上按 g a 或 g 8 查看代码点或字节,分别构成一个角色。
答案 1 :(得分:1)
095C
是DEVANAGARI LETTER DDDHA
:ड़0921
是DEVANAGARI LETTER DDA
:ड093C
是DEVANAGARI SIGN NUKTA
(字符下方的点):़你可以在Python中看到那些是等价的(这里是Python 3语法):
import unicodedata
unicodedata.normalize('NFC', '\u0921\u093c') == unicodedata.normalize('NFC', '\u095c')
# => True
您应该能够使用:%!uconv -x any-nfc
(安装了ICU)或:%!ruby -ne 'puts $_.unicode_normalize(:nfc)'
(安装了Ruby)来规范化您的文件。