在GBK與UTF 8互轉時遇到問題,及解決方案

2021-08-22 11:55:21 字數 904 閱讀 7081

最近在寫乙個根據模板標籤生成word的專案,在本地測試無問題但是放到伺服器上會出現生成字元亂碼的情況,

考慮到gbk轉utf-8使用getbytes只有在長度為奇數時才會出現精度丟失,想到給byte補全至偶數。

具體**如下

/**

* byte轉16進製制字串

*@param bytearray

*@return

*/public

static string printhex(byte bytearray)

return sb.tostring();

};/**

* 16進製制轉byte

*@param str

*@return

*/public

static

byte hexstrtobytearray(string str)

if (str.length() == 0)

byte bytearray = new

byte[str.length() / 2];

for (int i = 0; i < bytearray.length; i++)

return bytearray;

}

測試

private final static string space = "eea092";//全形空格

public

static

void

main(string args) throws unsupportedencodingexception

結果

未修改之前:測試啊誰�?

修改之後:測試啊誰說

可以根據使用場景更改,當長度為偶數時不增加,我這裡就不寫了

C實現utf8與gbk互轉

在實現解析上傳後的csv檔案時,發現excel是gbk編碼,c解析的時候亂碼,翻資料找到這篇部落格 c和c 實現字元轉碼 在移植到arm上後,發現liconv函式通過cgi無法正常呼叫,從shell中是可以正常呼叫的,就很奇怪。然後今晚沒找到好的解決方法,就棄用這個函式了,直接用命令列的方式將檔案的...

GBK與UTF 8的區別

gbk的文字編碼是雙位元組來表示的,即不論中 英文本元均使用雙位元組來表示,只不過為區分中文,將其最高位都定成1。至於utf 8編碼則是用以解決國際上字元的一種多位元組編碼,它對英文使用8位 即乙個位元組 中文使用24位 三個位元組 來編碼。對於英文本元較多的論壇則用utf 8節省空間。gbk包含全...

gbk與utf 8的區別

很多使用者問gbk與utf 8版本有什麼區別,這邊作了個整理如下 kesioncms的gbk版本與utf 8版本功能是一樣的 只不過編碼方式不同。gbk的文字編碼是雙位元組來表示的,即不論中 英文本元均使用雙位元組來表示,只不過為區分中文,將其最高位都定成1。至於utf 8編碼則是用以解決國際上字元...