将非英语字符转换为Unicode(UTF-8)

Len*_*ran 1 unicode fonts character-encoding tamil

我将大量文本从另一个系统复制到我的电脑上.当我在PC上查看文本时,看起来很奇怪.所以我从其他PC上复制了所有字体并将它们安装在我的中.现在文本看起来还不错,但实际上它似乎不是Unicode.例如,如果我复制文本并粘贴到另一个支持UTF-8的编辑器(如Notepad ++),我会得到英文字符("bgah;"),如下所示. 在此输入图像描述

如何将整个文本转换为unicode文本,如下所示.所以我可以复制文本并粘贴到其他地方.

பெயர்

上述文字是使用http://www.google.com/transliterate/indic/Tamil手动获取的

我需要完成这个转换,所以我可以将它们复制到数据库表中.

bob*_*nce 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'))
Run Code Online (Sandbox Code Playgroud)