Android 에서 로그 인쇄 로 그 를 사용 할 때 중국어 가 난 장 판(유 니 코드)을 해결 합 니 다.

4398 단어 android_problem
앱 을 개발 하 는 과정 에서 네트워크 에서 가 져 온 데 이 터 를 자주 출력 하지만,이때 출력 된 log 가 유 니 코드 형식 이라는 것 을 알 수 있 습 니 다.
 {"state":{"code":10200,"msg":"\u83b7\u53d6\u6210\u529f"},"data":{}}

무슨 중국어 내용 인지 알 수 없 으 니 다음 방법 이 여러분 의 문 제 를 해결 하 는 데 도움 이 되 기 를 바 랍 니 다.아래 방법 은 처리 할 때 작은 성능 에 영향 을 줄 수 있 습 니 다.
    public static String unicodeToUTF_8(String src) {
        if (null == src) {
            return null;
        }
        System.out.println("src: " + src);
        StringBuilder out = new StringBuilder();
        for (int i = 0; i < src.length();) {
            char c = src.charAt(i);
            if (i + 6 < src.length() && c == '\\' && src.charAt(i + 1) == 'u') {
                String hex = src.substring(i + 2, i + 6);
                try {
                    out.append((char) Integer.parseInt(hex, 16));
                } catch (NumberFormatException nfe) {
                    nfe.fillInStackTrace();
                }
                i = i + 6;
            } else {
                out.append(src.charAt(i));
                ++i;
            }
        }
        return out.toString();

    }

테스트 데모:
package cyy.demo;

public class Test {

    private static final String SRC = "\"state\":{\"code\":10200,\"msg\":\"\\u83b7\\u53d6\\u6210\\u529f\"},\"data\":{}}";

    public static void main(String[] args) {
        String out = unicodeToUTF_8(SRC);
        System.out.println("out: " + out);
    }
}

OUTPUT:
src: "state":{"code":10200,"msg":"\u83b7\u53d6\u6210\u529f"},"data":{}}
out: "state":{"code":10200,"msg":"    "},"data":{}}

원리:유 니 코드 인 코딩 은 UTF-8 유 니 코드 로 두 바이트 로 한 문 자 를 인 코딩 합 니 다.예 를 들 어 한자'경'의 인 코딩 은 0x7ECF 입 니 다.문자 코드 는 보통 16 진법 으로 표 시 됩 니 다.그래서 16 진법 을 획득 한 후 10 진법 으로 전환 하고 char 형식 을 강하 게 돌리 면 됩 니 다!(char) Integer.parseInt(hex, 16)

좋은 웹페이지 즐겨찾기