3
回答
搭建框架的过程中又遇到了中文乱码问题,在google浏览器和火狐上面没问题,但是在ie下就乱码了。
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>

何解?

<无标签>
举报
巴顿
发帖于5年前 3回/2K+阅
共有3个答案 最后回答: 5年前

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

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

--- 共有 5 条评论 ---
水牛叔叔学到一招,之前就听说过ie的编码有点不同 5年前 回复
巴顿回复 @wiseach : 嗯,我前后端都统一了,所以我debug进去的时候发现不用解码就可以得到正确的中文了。 5年前 回复
wiseach回复 @巴顿 : 只要前后端都统一使用UTF8就不需要操作,除非某个环节(如数据库)使用了其它格式的编码,则可能需要转换。 5年前 回复
时光过客回复 @巴顿 : 要解码 5年前 回复
巴顿后台需要怎么操作么? 5年前 回复

引用来自“wiseach”的答案

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

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

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