1

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

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

பெயர்</p>

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

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

4

4 回答 4

5

“Ja-01”是一种具有自定义“视觉编码”的字体。

也就是说,字符序列真的是“bgah”;它对你来说只是泰米尔语,因为拉丁字符的字体形状bg看起来像பெ

这总是要避免的,因为通过将内容存储为“bgah”;您失去了将其作为真正的泰米尔语进行搜索和处理的能力,但这种方法在 Unicode 之前的时代很常见,特别是对于没有成熟编码标准的不太广泛的脚本。此应用程序可能早于 TSCI 的广泛使用。

因为它是一种不被任何其他字体共享的自定义编码,所以您不太可能找到一种工具来将此编码中的内容转换为正确的 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'))
于 2012-01-29T10:10:00.220 回答
4

你找到的字体给你带来了麻烦。实际的单元格文本是“bgah;”,它被渲染为 பெயர் 因为您找到了一种可以使用 8 位非 Unicode 字符的字体。所以阅读它或将它粘贴到 Notepad++ 中会产生“bgah”;因为那是真实的文字。只有通过强制显示字符串的程序使用相同的字体,它才能再次正确呈现。

放弃字体并输入 Unicode,如下所示:

在此处输入图像描述

于 2012-01-28T14:41:49.487 回答
2

“bgah” 看起来像一个基于 Baamini 的系统,它是 pre-unicode。它在 90 年代在加拿大(以及一般的 SL 泰米尔侨民)很受欢迎。

正如其他人所提到的,它看起来像是一种自定义视觉编码,在保持 ASCII 编码的同时模仿了外国脚本的性能。

谷歌“Baamini 到 unicode 转换器”。科伦坡大学似乎已经提出了一个:http ://www.ucsc.cmb.ac.lk/ltrl/services/feconverter/?maps=t_b-u.xml

让我知道这个是否奏效。如果没有,我可以四处打听,给你拿点东西。

于 2013-01-25T16:57:22.637 回答
0

您可以先检查编码是否为TSCI,因为这听起来很可能。它是 8 位编码,您复制的字体可能基于该编码。查看 SourceForge 的TSCI 到 UTF-8 转换器是否合适。那里的项目名为“Any Tamil Encoding to Unicode”,但他们说目前只支持 TSCII

于 2012-01-28T14:21:36.233 回答