【开源中国 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编码的显示
我暂时是用笨方法这样解决掉的
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"));
希望找到一个完美的解决方法