0

JavaWebプロジェクトで奇妙なエンコーディングの問題が発生します。

System.out.println("search url: " + searchURL);    
searchURL = new String(searchURL.getBytes("utf-8"), "utf-8");
System.out.println("test===" + new String(searchURL.getBytes("utf-8")));

上記のコードをJavaのmain関数でテストしましたが、漢字では問題なく動作します。

output:
search url: https://api.datamarket.azure.com/Data.ashx/Bing/Search/Image?Query=%27机器 猫%27&$format=json&$skip=0

test===https://api.datamarket.azure.com/Data.ashx/Bing/Search/Image?Query=%27机器 猫%27&$format=json&$skip=0

しかし、このコードをTomcatで実行すると。

output:
search url: https://api.datamarket.azure.com/Data.ashx/Bing/Search/Image?Query=%27机器 猫%27&$format=json&$skip=0

test===https://api.datamarket.azure.com/Data.ashx/Bing/Search/Image?Query=%27鏈哄櫒 鐚?27&$format=json&$skip=0

次に、Tomcatでこれをテストします。

searchURL = new String(searchURL.getBytes("utf-8"), "utf-8");
System.out.println(new String(searchURL.getBytes("gbk"));
System.out.println(new String(searchURL.getBytes("gb2312"));

上記の両方は大丈夫です。なぜ ?どんな提案でもありがたいです、本当にthx!

4

1 に答える 1

0

デフォルトの文字セットは、jvmとtomcatjvmで異なります

試す

System.out.println(Charset.defaultCharset());

これは、デフォルトの文字セットを使用して、utf-8である場合とそうでない場合がある文字列をエンコードします。

System.out.println("test===" + new String(searchURL.getBytes("utf-8")));

したがって、バイト配列がutf-8である間、デコーダーは他の何かを期待する可能性があります。

于 2013-01-23T04:57:51.673 に答える