1. 程式人生 > >GBK與UNICODE互轉

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慎用。