如题:看到一些贴子上说浏览器根据应答头中的charset,以及网页<meta 元素中指明的charset来对form中的内容进行编码。
但是我认为浏览器是统一用iso8859-1进行的编码然后发往服务器。
否则,为何我的很多指定了gb2312的页面在提交参数后,我还要如此编码解码才能得到正确的汉字内容?
String s=request.getParameter("name");
if (s !=null){
s = new String(s.getBytes("iso8859-1"),"gb2312"));
}
这说明浏览器发送信息时候并没有按页面中的<meta 元素中指明的charset指定的gb2312编码然后再发,而是使用的iso8859-1
对否?
大家来评论评论
但是我认为浏览器是统一用iso8859-1进行的编码然后发往服务器。
否则,为何我的很多指定了gb2312的页面在提交参数后,我还要如此编码解码才能得到正确的汉字内容?
String s=request.getParameter("name");
if (s !=null){
s = new String(s.getBytes("iso8859-1"),"gb2312"));
}
这说明浏览器发送信息时候并没有按页面中的<meta 元素中指明的charset指定的gb2312编码然后再发,而是使用的iso8859-1
对否?
大家来评论评论
解决方案 »
- ssh,获得每次访问的action的具体类
- Eclipse为什么断点突然不好使了
- 再求一个正则表达式,html标签中匹配属性名称后面没有等号=的
- 动态JSP页面怎样生成静态的html页面,请高手指点!!
- FielItem 和 byte[]
- 用jsp和javabean怎样做个注册页面和登录页面
- 关于struts中的问题
- struts和spring整合,是在struts的action中直接调用spring的bean好,还是将action交给spring好?
- jsp+sqlserver2000如何把中文插入到text类型的字段里呢!
- 关于jdbc for sqlserver问题!
- 如何在jsp中利用ftp实现上传下载
- 遇到一个奇怪的问题百思不得其解。
你传到别的地方就不是按这个编码了,那是那java默认的编码进行传输的
要在request.setCharacterEncoding("GB2312");
s = request.getParameter("xx");
就不需要转了
meta中的charset是浏览器展示页面时的编码;
在交互中request中提交的参数按着meta中的charset编码,所以服务器端读取的时候需要按着这个charset进行编码处理.
兄弟俺愚顿,希望大家给我明确几点:
meta里指定的是浏览器用什么编码来呈现,这个我深信不疑。
但是,1:浏览器往服务器发送信息时候是按照哪个地方(应答头里的content-type,还是meta里的内容)来选择采用哪种编码方式?
2:或者浏览器根本无需选择,一律用iso8859-1来发送?
3:如果浏览器是按照应答头中的指示或者meta的指定来采用某个编码方式,之所以我需要
String s=request.getParameter("name");
if (s !=null){
s = new String(s.getBytes("iso8859-1"),"gb2312"));
}
,是因为服务器(某些,可能有些不是这样的),在我request.getParameter("name");之前就统一用iso8859-1对浏览器发过来的东东进行了一次转换(尽管不是俺所需要的转换),所以才导致我又要来一转换?
谢谢