【问题标题】:Convert non english characters into Unicode (UTF-8)将非英文字符转换为 Unicode (UTF-8)
【发布时间】:2012-01-28 13:53:49
【问题描述】:

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

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

பெயர்

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

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

【问题讨论】:

  • 如果您可以创建每个字符代码及其对应的 Unicode 点的表格,那么有人可以帮助您创建执行翻译的程序。在那之前,这对 SO 来说是题外话。
  • 看起来问题是文本采用非标准字符编码的问题,与 UTF-8 无关。添加标签“字符编码”,删除标签“utf-8”。

标签: unicode character-encoding fonts tamil


【解决方案1】:

“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'))

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 是的,你是对的。但是如何将我的文本从旧字体转换为 unicode 字体?
    • 您必须从旧的编码转换您的文本。这看起来不像 TSCI。 tamil.net/tscii/charset17.gif 代码页 57004 是泰米尔语,但也不匹配。不知道,问生成文本的人。
    • 文本由一个 10 年前的 VB 应用生成,我们现在不支持该软件。
    • 显然我无法帮你找到这个应用程序的程序员,他比我更接近你。您唯一可以做的另一件事是从您获得的字体对编码进行逆向工程。让它渲染所有可能的 ASCII 代码,看看你得到了什么泰米尔字形。
    【解决方案3】:

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

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

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

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

    【讨论】:

    • 嘿,这太酷了..完美运行..只有“ர்”有问题,我手动更正了。
    • 我很高兴它有帮助!是的,ர் 可能是模棱两可的。当大多数人写它(即在纸上)时,它看起来像一个“aravu”(ா,但没有那个圆圈),上面有一个“pulli”(点,் - 也没有圆圈)。这看起来像“peyar”(பெயர்)在您发布的文本中的书写方式。
    • Riyafa,试试这个网站:ucsc.cmb.ac.lk/ltrl/services/feconverter/t1.html
    【解决方案4】:

    您可以先检查编码是否为TSCII,因为这听起来很可能。它是 8 位编码,您复制的字体可能基于该编码。查看 SourceForge 的 TSCII to UTF-8 converter 是否合适。那里的项目名为“Any Tamil Encoding to Unicode”,但they say that only TSCII is supported for now。

    【讨论】:

    • 我试过这个 - 复制“bgah;”并将其放入 IN.txt 并通过命令行运行“ascii2unicode.exe”。但程序意外关闭。我尝试使用 Windows XP 兼容模式。它仍然崩溃。
    • TSCII参考文档表明编码兼容ASCII;泰米尔语字符都设置了第 8 位。因此,字体似乎使用了另一种编码。
    猜你喜欢
    • 2018-09-14
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 1970-01-01
    • 2012-02-22
    • 2012-07-02
    • 1970-01-01
    • 2020-06-07
    相关资源
    最近更新 更多