>Java >Java베이스 >자바 문자열이 깨졌습니다.

자바 문자열이 깨졌습니다.

angryTom
angryTom원래의
2019-11-18 10:22:394171검색

자바 문자열이 깨졌습니다.

java 문자열 왜곡 문자

문제는 시험판, 프로덕션 및 로컬 환경의 시스템 인코딩 방법이 일치하지 않는 반면, 시험판의 기본값은 UTF-8입니다. 프로덕션 환경은 GBK 인코딩이므로 잘못된 문자가 나타납니다.

인코딩 방식을 지정하지 않으면 기본적으로 시스템 인코딩 방식이 사용됩니다.

String csn = Charset.defaultCharset().name();
try {
    // use charset name decode() variant which provides caching.
    return decode(csn, ba, off, len);
} catch (UnsupportedEncodingException x) {
    warnUnsupportedCharset(csn);
}
try {
    return decode("ISO-8859-1", ba, off, len);
} catch (UnsupportedEncodingException x) {
    // If this code is hit during VM initialization, MessageUtils is
    // the only way we will be able to get any kind of error message.
    MessageUtils.err("ISO-8859-1 charset not available: " +
        x.toString());
    // If we can not find ISO-8859-1 (a required encoding) then things
    // are seriously wrong with the installation.
    System.exit(1);
    return null;
}
System.getProperty("file.encoding") //查看系统默认编码方式

해결책은 다음과 같습니다.

1. 문자열을 사용할 때 트랜스코딩

System.out.println(str);
String str1 = new String(str.getBytes("ISO-8859-1"), "utf-8");
System.out.println(str1);
String str2 = new String(str.getBytes("gb2312"), "utf-8");
System.out.println(str2);
String str3 = new String(str.getBytes("gbk"), "utf-8");
System.out.println(str3);

2. 문자열을 사용할 때는 인코딩이나 디코딩에 관계없이 인코딩 방법은 다음과 같아야 합니다. 지정하지 않으면 시스템 환경과 결합됩니다.

php 중국어 웹사이트, 수많은 무료

Java 입문 튜토리얼

, 온라인 학습을 환영합니다!

위 내용은 자바 문자열이 깨졌습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.