Преобразование не английских символов в Unicode (UTF-8) - PullRequest
1 голос
/ 28 января 2012

Я скопировал большое количество текста из другой системы на мой компьютер.Когда я смотрел текст на моем компьютере, он выглядел странно.Поэтому я скопировал все шрифты с другого компьютера и установил их на свой компьютер.Теперь текст выглядит хорошо, но на самом деле кажется, что это не в Unicode.Например, если я скопирую текст и вставлю в другой редактор, поддерживаемый UTF-8, такой как Notepad ++, я получу английские символы ("bgah;") только так, как показано ниже.enter image description here

Как преобразовать весь текст в текст в Unicode, как показано ниже.Поэтому я могу скопировать текст и вставить в любое другое место.

பெயர்

Приведенный выше текст был получен вручную с использованием http://www.google.com/transliterate/indic/Tamil

Мне нужно, чтобы это преобразование было сделано, поэтому яможно скопировать их в таблицы базы данных.

Ответы [ 4 ]

5 голосов
/ 29 января 2012

«Ja-01» - это шрифт с пользовательской «визуальной кодировкой».

То есть последовательность символов действительно «bgah»;и он выглядит только как тамильский, потому что формы шрифта для латинских символов bg выглядят как பெ.

Этого всегда следует избегать, потому что, сохраняя содержимое как "bgah;"вы теряете возможность искать и обрабатывать его как настоящий тамильский, но такой подход был распространен в дни до Юникода, особенно для менее распространенных сценариев без зрелых стандартов кодирования.Это приложение, вероятно, предшествует широкому использованию 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'))
4 голосов
/ 28 января 2012

Шрифт, который вы нашли, доставляет вам неприятности.Фактический текст ячейки - «bgah;», он отображается в பெயர், потому что вы нашли шрифт, который может работать с 8-битными не-Unicode-символами.Таким образом, чтение или вставка в Notepad ++ приведет к появлению «bgah;»так как это реальный текст.Он может быть снова правильно обработан, только если заставить программу, отображающую строку, использовать тот же шрифт.

Отбросьте шрифт и введите Unicode, чтобы он выглядел следующим образом:

enter image description here

2 голосов
/ 25 января 2013

"bgah" выглядит как система на основе Baamini, которая является пре-юникодом. Он был популярен в Канаде (и диаспоре SL тамилов в целом) в 90-х годах.

Как уже упоминалось, это похоже на пользовательскую визуальную кодировку, которая имитирует производительность стороннего скрипта при сохранении кодировки ASCII.

Google "Конвертер Baamini в Юникод". Университет Коломбо, кажется, поднял один: http://www.ucsc.cmb.ac.lk/ltrl/services/feconverter/?maps=t_b-u.xml

Дайте мне знать, если это работает. Если нет, я могу спросить и получить что-то для вас.

0 голосов
/ 28 января 2012

Вы можете сначала проверить, является ли кодировка TSCII , поскольку это звучит наиболее вероятно. Это 8-битная кодировка, и скопированные вами шрифты, вероятно, основаны на этой кодировке. Проверьте, подходит ли конвертер TSCII в UTF-8 в SourceForge. Там проект называется «Any Tamil Encoding to Unicode», но говорят, что на данный момент поддерживается только TSCII .

...