2012-11-29 139 views
1

我想將RTF文本轉換爲Unicode。在RTF字體表中,可以找到字體或字體的名稱(例如Arial Cyr,Courier Greek)以及與其一起使用的字符集(0-255)。那麼如何編寫一個將這些設置的字符代碼(0-255)轉換爲Unicode的函數呢?如何將ANSI文本轉換爲Unicode?

正如我所看到的,像希臘文,Cyr,Tur等後置標籤會影響顯示字符的字形,字符集也會影響它。所以函數可以擁有這些輸入參數:

字體名後綴,字體字符集,字符代碼

但下一步是什麼?還是我在錯誤的方式?

+0

這是什麼編程語言?此外,字體是不相關的,你只需要將字符集轉換爲UTF-8。 - [每個程序員絕對,積極需要知道關於編碼和字符集處理文本](http://kunststube.net/encoding/) – deceze

+1

這是一個重複的,看看這裏http://stackoverflow.com/questions/2192319/python-convert-rtf-file-to-unicode – varun

+0

我是在windows下的C++。我不相信字體是不相關的,因爲例如符號,Webding和其他特殊的字體名稱會導致問題。字體名稱後綴也很重要,但我不知道方式,Windows如何處理這些後綴。 – user1863784

回答

3

RTF早在Unicode之前就已經發明瞭。它當然不是ANSI文本,RTF只使用ASCII,它使用一個相當邪惡的字符集組合與非ASCII字符編碼的十六進制字符集。映射也不完美,許多Unicode碼點沒有相應的字符集。

你會花一生來創建你自己的RTF到Unicode轉換器。利用現有的解決方案,大多數平臺都有一個。在Windows上,這將是RichEdit控件。如果你使用.NET,那麼它特別簡單,使用RichTextBox類,分配它的Rtf屬性並讀回它的Text屬性。這是utf-16編碼的Unicode。

+0

非常感謝,漢斯!我會嘗試這一點,並分享結果。 – user1863784