在java项目中,我遇到了一个奇怪的编码问题。
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主函数测试了上面的代码,在汉字中,它工作正常。
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"));上面两个都可以。那为什么呢?任何建议都会很感激的,真的!
发布于 2013-01-23 04:57:51
默认字符集在jvm和tomcat之间将有所不同。
试一试
System.out.println(Charset.defaultCharset());这将使用默认字符集对字符串进行编码,该字符串可能是utf-8,也可能不是。
System.out.println("test===" + new String(searchURL.getBytes("utf-8")));因此,当字节数组是utf-8时,解码器可能会期望其他的东西。
https://stackoverflow.com/questions/14472438
复制相似问题