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. トランスコード文字化け
String decodeStr=null; decodeStr = URLDecoder.decode(url, "utf-8");
したがって、String を使用する場合は、エンコード、デコードに関係なく、エンコード方法を指定する必要があります。そうしないと、システム環境に連動します。
php 中国語 Web サイト、無料の Java 入門チュートリアル が多数あり、オンラインで学習することを歓迎します。
以上がJavaの文字列が文字化けするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。