> Java > Java베이스 > 본문

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

angryTom
풀어 주다: 2019-11-18 10:22:39
원래의
4170명이 탐색했습니다.

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

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿