搭建框架的过程中又遇到了中文乱码问题,在google浏览器和火狐上面没问题,但是在ie下就乱码了。

巴顿 发布于 2013/09/09 13:59
阅读 2K+
收藏 0
function editMenu() {
            var menuName = $("#menuName").val();
            var parentMenu = $("#parentMenu option:selected").val();
            var functionId = $("#functionId option:selected").val();
            var menuId = $("#menuId").val();
            var url = '<%=contextPath%>/menuEditServlet?menuId='+menuId+'&parentMenu='+parentMenu+'&functionId='+functionId+'&menuName='+menuName;
            $.post(url,function(data){
                var result = eval(data);
                if(result) {
                    $("#result").html("编辑菜单成功");
                }
                else {
                    $("#result").html("编辑菜单失败");
                }
            });

        }


如上所示menuName对应的是中文,我在google和火狐上没问题,在ie上就乱码了。

tomcat的servler.xml中设置为 URIEncoding="UTF-8"

jsp页面我也定义为<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

jsp文件的编码方式我也定义为UTF-8格式,java文件的格式我也定义为UTF-8编码格式。

数据库编码格式也是UTF-8格式

请教各位,在google和火狐上没问题,在ie上就乱码的原因是什么呢?然后应该怎么样去解决呢?

你们是怎么解决的?



补充一点:

我刚刚试了一下,如果我用form的形式提交的话,在ie下也是没有乱码的!!!

比如

<form action="xxxxxx">

</from>

何解?

加载中
0
wiseach
wiseach

这个和$.post无关,原因在于你的URL中含有汉字时,IE不会自动转为UTF8编码。必须自己手动用js的encodeURI或@iSea 提到的函数转码为UTF8格式之后,再拼接你要post的URL。这样服务器端处理时得到的就UTF8编码,而不是乱码。代码调整如下即可:

var menuName = encodeURI($("#menuName").val())

水牛叔叔
水牛叔叔
学到一招,之前就听说过ie的编码有点不同
巴顿
巴顿
回复 @wiseach : 嗯,我前后端都统一了,所以我debug进去的时候发现不用解码就可以得到正确的中文了。
wiseach
wiseach
回复 @巴顿 : 只要前后端都统一使用UTF8就不需要操作,除非某个环节(如数据库)使用了其它格式的编码,则可能需要转换。
时光过客
时光过客
回复 @巴顿 : 要解码
巴顿
巴顿
后台需要怎么操作么?
0
iSea
iSea
get提交需要对汉字部分转码 
encodeURIComponent("编辑菜单")

苏生不惑
苏生不惑
$.post并不是真正的post?
iSea
iSea
回复 @巴顿 : 他的参数是放到url的,不是post参数!
巴顿
巴顿
$.post这样难道还不是post形式提交?
0
巴顿
巴顿

引用来自“wiseach”的答案

这个和$.post无关,原因在于你的URL中含有汉字时,IE不会自动转为UTF8编码。必须自己手动用js的encodeURI或@iSea 提到的函数转码为UTF8格式之后,再拼接你要post的URL。这样服务器端处理时得到的就UTF8编码,而不是乱码。代码调整如下即可:

var menuName = encodeURI($("#menuName").val())

谢谢各位朋友的回复,收益匪浅。
返回顶部
顶部