UTF-8轉碼GBK

   昨天一個大學的同學問了一個關於utf-8轉碼gbk的問題,所以兩個人一起討論了一下關於utf-8轉碼成爲GBK的亂碼原因。

  正常情況下如果我們需要將UTF-8格式轉碼爲GBK,我們會需要經過這樣一箇中轉:

  通常情況下如果直接轉碼會出現一種情況就是GBK轉碼UFT-8出現亂碼後亂碼可以在轉碼回去變爲原來的GBK中文。

但是UTF-8轉碼爲GBK則會出現兩種情況,在中文字符長度爲偶數時是可以直接將亂碼還原回去的,但是奇數情況下是無法全部轉碼回去的

究竟什麼原因呢?

    這和UTF-8的編碼字節數和GBK的編碼字節數有關,我們知道UTF-8的字符集是以三個字節數來存儲的,而GBK則是兩個字節數,所以就存在以下問題


當“你好好”三個字轉碼爲字符集表示的時候,一共得到九個字節,當然這九個字節轉碼爲gbk的時候會被兩兩分組,所以第九個字節就會被拋棄無法識別轉化爲有標記的亂碼符號,當我們再把亂碼轉回去的時候,自然就無法還原爲原來的UTF-8了。如下圖

所以在UTF-8轉gbk的基數情況下就會出現最後一個字轉碼爲亂碼後無法還原的情況。

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