java中String編碼轉換 UTF-8轉GBK


1.GB2312等都可以用GBK代替.
2.new String(row.getBytes("GB2312"), "UTF8") 這種寫法是不對的, 中文仍然會亂碼.

方案:
解決GBK字符轉UTF-8亂碼問題: https://www.cnblogs.com/xijin-wu/p/5884822.html

   徹底搞懂編碼 GBK 和 UTF8:https://www.cnblogs.com/hehheai/p/6510879.html



/**
     * GBK轉UTF-8
     * @param gbkStr
     * @return
     */
    public static byte[] getUTF8BytesFromGBKString(String gbkStr) {
        int n = gbkStr.length();
        byte[] utfBytes = new byte[3 * n];
        int k = 0;
        for (int i = 0; i < n; i++) {
            int m = gbkStr.charAt(i);
            if (m < 128 && m >= 0) {
                utfBytes[k++] = (byte) m;
                continue;
            }
            utfBytes[k++] = (byte) (0xe0 | (m >> 12));
            utfBytes[k++] = (byte) (0x80 | ((m >> 6) & 0x3f));
            utfBytes[k++] = (byte) (0x80 | (m & 0x3f));
        }
        if (k < utfBytes.length) {
            byte[] tmp = new byte[k];
            System.arraycopy(utfBytes, 0, tmp, 0, k);
            return tmp;
        }
        return utfBytes;
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM