求教一个angularJS 中文乱码的问题

601983016 发布于 2015/10/30 10:51
阅读 9K+
收藏 0

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

我用angularJS做前段,SpringMVC接收数据,一开始没发现,做了一个增删改查操作,添加的中文数据可以正常在页面显示,但我发现数据库存的却是乱码,查看了数据库底层的编码都是UTF8,我尝试用普通的 JSP页面通过表单提交数据,跟踪断点和数据库中文都是正常的,但是用angularjs  $http 方式提交数据到后台中文乱码,另外spring 返回到页面的数据显示也是乱码,spring 编码过滤器也有,页面跟后台文件都统一用的UTF-8,搞不懂是哪些环节的问题。

 粘上部分代码

 $scope.add=function(){
  
       var user = {name:$scope.name,age:$scope.age,password:$scope.password,email:$scope.email};
       console.log(user);
       $http(
        {   method:'POST',
        url:'user/addInfo.do',
        params:user,
        headers: { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
        }
       ).success(function(data) {  
        alert($scope.name);
           $scope.reply=data;
           $scope.getAll();
           }); 
       
  };  


根据断点调试,提交到后台的乱码我确定是ISO-8859-1编码的显示

加载中
0
Tom旭
Tom旭
试试content-type
Tom旭
Tom旭
回复 @601983016 : 加到请求头
601983016
601983016
在$http参数里加吗,我加了也不行
0
GITTODO
GITTODO
你的服务器,tomcat之类的是不是也设置了?
601983016
601983016
按你说的,设置了,但是还是不行
0
601983016
601983016

我暂时是用笨方法这样解决掉的

spring mvc配置

<mvc:annotation-driven />

<bean class="org.springframework.http.converter.StringHttpMessageConverter">
    <property name="supportedMediaTypes">  
               <list>  
                   <value>text/plain;charset=UTF-8</value>  
                   <value>text/html;charset=UTF-8</value>  
               </list>  
           </property>  
</bean>
 
</beans>

在后台控制器接收到对象后对带中文的参数进行转码

add.setName(new String(add.getName().getBytes("ISO-8859-1"), "utf-8"));


希望找到一个完美的解决方法

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部