关于request中的Accept-Language

weimu2002163com 2014-05-26 03:08:28
我不知道为啥accept-language以en开头的时候要转换编码。然后我的浏览器的语言刚好设置是语言选项就一个英文,于是就发生了,输入中文需要用到有下面方法的时候结果是问号。
  strEncoding = req.getCharacterEncoding();

if(req.getHeader("accept-language").startsWith("en")) {
strEncoding = "ISO8859_1";
}
str = new String(str.getBytes(strEncoding), "GBK");


弄了很久才解决,就在浏览器语言里加个中文,且设为首选项就可以了。但是纳闷的是,为啥en开头的这里要转码
...全文
1497 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
LipipiFighting 2016-05-12
  • 打赏
  • 举报
回复
可能是服务器发送给浏览器,英文网页编码格式就是ISO8859_1,所以收到的网页就是拿ISO8859_1编码的
weimu2002163com 2014-05-26
  • 打赏
  • 举报
回复
引用 1 楼 u011461314 的回复:
刚好彻底搞清了,调理不顺,看看能不能看懂。
String s = "中国人 text here";		
		byte[] b = s.getBytes("UTF-8");
		//假设,上面是浏览器的,他要传输,必须变0101,  b变成0101了。
		
		//下面是服务器的,他接收了一串0101,他要变String;
		String s1 = new String(b,"UTF-8");
		String s2 = new String(b,"GBK");
不大对啊,你说的我能懂。我就是没明白,为啥项目里要这样写:是en开头的话,要先经过ISO8859_1转码,再用GBK去接收。最后结果还是问号啊。
zhjdg 2014-05-26
  • 打赏
  • 举报
回复
刚好彻底搞清了,调理不顺,看看能不能看懂。
String s = "中国人 text here";		
		byte[] b = s.getBytes("UTF-8");
		//假设,上面是浏览器的,他要传输,必须变0101,  b变成0101了。
		
		//下面是服务器的,他接收了一串0101,他要变String;
		String s1 = new String(b,"UTF-8");
		String s2 = new String(b,"GBK");

10,612

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 其他
社区管理员
  • 其他
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧