关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
最近项目用到了backbone做前后端的分离方案,遇见了中文乱码问题,解决方案总结如下:
假设需要存一条课程记录到后台
model定义如下:
varAddCourse=Backbone.Model.extend({
url:path+"/course/add",
parse:function(response){
returnresponse.data;
}
});
encodeURIComponent函数将中文的内容进行编码
$('#addCourseBtn').click(function(){
varcourseName=encodeURIComponent($('#myCourseName').val().trim(),'utf8');
vardescription=encodeURIComponent($('#description').val().trim(),'utf8');
varprivilege=encodeURIComponent($('#privilege').val().trim(),'utf8');
varuserId=$.cookie('userId');
varcourse=newAddCourse();
//传数据
course.fetch({data:$.param({courseName:courseName,description:description,privilege:privilege,userId:userId})});
});
api定义,URLDecoder.decode函数进行解码
@Controller
@RequestMapping("/course")
publicclassCourseController{
@Resource
privateCourseServicecourseService;
@RequestMapping("/add")
//添加代码:编码修改
@ResponseBody
publicResultadd(StringcourseName,Stringdescription,Stringprivilege,intuserId){
StringdeCourseName;
StringdeDescription;
StringdePrivilege;
Resultresult=newResult();
try{
deCourseName=URLDecoder.decode(courseName,"UTF-8");
deDescription=URLDecoder.decode(description,"UTF-8");
dePrivilege=URLDecoder.decode(privilege,"UTF-8");
result=courseService.addCourse(deCourseName,deDescription,dePrivilege,userId);
}catch(UnsupportedEncodingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
returnresult;
}
以上所述是小编给大家介绍的关于backboneurl请求中参数带有中文存入数据库是乱码的快速解决办法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!