Javaの文字列が文字化けする

angryTom
リリース: 2019-11-18 10:22:39
オリジナル
4163 人が閲覧しました

Javaの文字列が文字化けする

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート