您的位置:首页 > 其它

20180316.BUG修复:关于前后端交互中文乱码的问题

2018-03-16 18:21 495 查看

20180316.BUG修复:关于前后端交互中文乱码的问题

作者: chenhaoting 
时间: 2018-03-16 
分类: 科研项目日志 
评论
首先重新建立数据库,确认所有编码格式为utf8.
然后猜测此BUG问题应该出在前后端交互信息的时候,信息没有被正确解析。
所以,修改后端javaweb,
确保项目根目录下/WebRoot/META-INF/context。xml文件中url=”jdbc:mysql://localhost:端口/数据库名?useUnicode=true&characterEncoding=utf-8“。
servlet的java文件中需要以utf8编码解析json字符串:
resp.setContentType("application/json;charset=utf-8");
然后修改前端,同样是需要正确解析,找到有需求的组件Right和组件注册,使用querystring.stringify()方法:
官方对此方法提供的解释是:obj通过遍历对象的“自己的属性” 从给定的URL生成URL查询字符串。
用法就是querystring.stringify({ 后端设定的请求取得的信息名: 前端要给后端的字符串, 后端设定的请求取得的信息名: 前端要给后端的字符串 });
所以以Right组件为例,修改异步请求部分所在的methods:
var lu = sessionStorage.getItem('login_user');
var ctx = this.context;
var qs = require('querystring');
if(lu!=null && ctx!=''){
this.$http.post('/api/UserManager/addEssay',
qs.stringify({user_name:lu,context:ctx}))
.then((response)=>{
this.context='';
this.remnant=300;
if(response.data.result==1)
this.hint="发送成功!!!如果需要再次发送,请在这里输入发表内容,限300字符"
})
.catch(function(err){
console.log(err);
});

}else if(sessionStorage.getItem('login_user')==null){
this.isModalVisible = true;
}else if(this.context==''){
this.hint="发送失败,内容为空。如果需要再次发送,请在这里输入发表内容,限300字符"
}
成功在后端得到中文,在前端显示中文。不过数据库的显示还有乱码,但是不影响使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: