我将大量文本从另一个系统复制到我的电脑上。当我在PC上查看文本时,看起来很奇怪。所以我从其他PC上复制了所有字体并将它们安装在我的中。现在文本看起来还不错,但实际上它似乎不是Unicode。例如,如果我复制文本并粘贴到另一个支持UTF-8的编辑器(如Notepad ++),我会得到英文字符(“bgah;”),如下所示。
如何将整个文本转换为unicode文本,如下所示。所以我可以复制文本并粘贴到其他地方。
பெயர்
上述文字是使用http://www.google.com/transliterate/indic/Tamil
手动获取的我需要完成此转换,因此我可以将它们复制到数据库表中。
答案 0 :(得分:5)
'Ja-01'是一种带有自定义'可视编码'的字体。
也就是说,字符序列确实是“bgah”;它只对你来说像泰米尔语,因为拉丁字符bg
的字体形状看起来像பெ
。
这总是要避免,因为将内容存储为“bgah”;你失去了搜索和处理它作为真正的泰米尔语的能力,但这种方法在前Unicode时代很常见,特别是对于没有成熟编码标准的不太广泛的脚本。该应用可能早于TSCII的广泛使用。
因为它是一种不被任何其他字体共享的自定义编码,所以您很可能找不到将此编码内容转换为正确Unicode字符的工具。它似乎不是任何标准字符排序,因此您必须查看字体(例如在charmap.exe中)并记下每个字符,找到Unicode中的匹配字符并在它们之间进行映射。
例如,这里有一个简单的Python脚本来替换文件中的字符:
mapping= {
u'a': u'\u0BAF', # Tamil letter Ya
u'b': u'\u0BAA', # Tamil letter Pa
u'g': u'\u0BC6', # Tamil vowel sign E (combining)
u'h': u'\u0BB0', # Tamil letter Ra
u';': u'\u0BCD', # Tamil sign virama (combining)
# fill in the rest of the mapping information here!
}
with open('ja01data.txt', 'rb') as fp:
data= fp.read().decode('utf-8')
for char in mapping:
data= data.replace(char, mapping[char])
with open('utf8data.txt', 'wb') as fp:
fp.write(data.encode('utf-8'))
答案 1 :(得分:4)
您找到的字体会让您遇到麻烦。实际的单元格文本是“bgah;”,它会被渲染为“பெயர்”,因为您找到了一个可以使用8位非Unicode字符的字体。阅读它或将其粘贴到Notepad ++中会产生“bgah”;因为这是真正的文本。它只能通过强制显示字符串的程序使用相同的字体再次正确呈现。
抛弃字体并输入Unicode,如下所示:
答案 2 :(得分:2)
“bgah”看起来像一个基于Baamini的系统,它是pre-unicode。它在90年代在加拿大(以及一般的SL Tamil侨民)很受欢迎。
正如其他人所提到的,它看起来像一个自定义的可视编码,在保持ASCII编码的同时模仿外部脚本的性能。
Google“Baamini to unicode convertor”。科伦坡大学似乎放了一个:http://www.ucsc.cmb.ac.lk/ltrl/services/feconverter/?maps=t_b-u.xml
如果有效,请告诉我。如果没有,我可以四处询问,为你找些东西。
答案 3 :(得分:0)
您可以先检查编码是否为TSCII,因为这听起来很可能。它是一个8位编码,您复制的字体可能基于该编码。看看SourceForge上的TSCII to UTF-8 converter是否合适。该项目名为“任何泰米尔语编码为Unicode”,但they say that only TSCII is supported for now。