首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java web项目中的字符编码

java web项目中的字符编码
EN

Stack Overflow用户
提问于 2013-01-23 04:25:20
回答 1查看 940关注 0票数 0

在java项目中,我遇到了一个奇怪的编码问题。

代码语言:javascript
复制
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主函数测试了上面的代码,在汉字中,它工作正常。

代码语言:javascript
复制
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中运行这段代码时。

代码语言:javascript
复制
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里测试这个:

代码语言:javascript
复制
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"));

上面两个都可以。那为什么呢?任何建议都会很感激的,真的!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-23 04:57:51

默认字符集在jvm和tomcat之间将有所不同。

试一试

代码语言:javascript
复制
System.out.println(Charset.defaultCharset());

这将使用默认字符集对字符串进行编码,该字符串可能是utf-8,也可能不是。

代码语言:javascript
复制
System.out.println("test===" + new String(searchURL.getBytes("utf-8")));

因此,当字节数组是utf-8时,解码器可能会期望其他的东西。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14472438

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档