GBK與UNICODE互轉
阿新 • • 發佈:2019-01-30
在一些應用場景,會出現這樣的需求: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慎用。