3
回答
求教一个angularJS 中文乱码的问题
【腾讯云】学生服务器套餐10元/月 >>>   

我用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编码的显示

举报
601983016
发帖于3年前 3回/7K+阅
共有3个答案 最后回答: 3年前

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

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"));


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

顶部