'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'))
如果您可以創建每個字符代碼的表以及與其對應的哪個Unicode點,則有人可以幫助您創建執行轉換的程序。在此之前,這是SO的主題。 – tripleee 2012-01-28 17:40:51
看起來問題在於文本處於非標準字符編碼狀態,並且與UTF-8無關。添加標籤「字符編碼」,刪除標籤「utf-8」。 – 2012-01-30 02:35:47