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