GBK與UNICODE互轉

在一些應用場景,會出現這樣的需求:UTF-8 -> Unicode -> GBK,然而,Unicode與GBK沒有相對應的算法可以直接轉換……

前提:GBK與UNICODE沒有直接的對應關係,只能通過一張大表將兩者聯繫起來。
對於計算機等大型設備來說,可以直接使用大神們寫好的庫,用起來不費吹灰之力,如GNU上的Libiconv,鏈接:http://directory.fsf.org/wiki/Libiconv;而對於小型嵌入式設備來說,由於ROM與RAM的限制,是沒法將Libiconv那麼大的庫應用上去了,我們只能從中選擇我們需要使用的CODE_PAGE。
具體實現方式:
首先,代碼部分可以從Fatfs的項目中獲得,如下圖:

其中的cc936.c就是我們所需要的GBK與unicode對應的表,裏面包含了查表的算法,我們只需要調用即可:
寫得很詳細。這個表很大,大概有170kb,查表的速度沒實測過,不知道怎麼樣。
測試:
打開VS,新建控制檯程序,copy代碼+數據類型typedef,調用函數測試:

結果輸出:

對比驗證:

結果無誤,說明是可用的。

ROM空間不夠的MCU慎用。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章