1. 程式人生 > >Android/Java 獲取一個byte[]的真實編碼,用於解決亂碼問題

Android/Java 獲取一個byte[]的真實編碼,用於解決亂碼問題

來源地址:https://blog.csdn.net/qq_31384551/article/details/81627840

一個byte陣列,byte[] buf,是由一個字串轉換來的,如何判斷字串使用的是什麼編碼?

Mozilla的一個元件提供了相應功能:

元件叫,juniversalchardet

jar包下載地址:http://maven.outofmemory.cn/com.googlecode.juniversalchardet/juniversalchardet/1.0.3/

maven引用:

        <dependency>
            <groupId>com.googlecode.juniversalchardet</groupId>
            <artifactId>juniversalchardet</artifactId>
            <version>1.0.3</version>
        </dependency>

呼叫程式碼:

public static String guessEncoding(byte[] bytes) {
    String DEFAULT_ENCODING = "UTF-8";
    org.mozilla.universalchardet.UniversalDetector detector =
        new org.mozilla.universalchardet.UniversalDetector(null);
    detector.handleData(bytes, 0, bytes.length);
    detector.dataEnd();
    String encoding = detector.getDetectedCharset();
    detector.reset();
    if (encoding == null) {
        encoding = DEFAULT_ENCODING;
    }
    return encoding;
}