最近项目用到了backbone 做前后端的分离方案,遇见了中文乱码问题,解决方案总结如下:
假设需要存一条课程记录到后台
model定义如下:
rush:js;">
var AddCourse= Backbone.Model.extend({
url:path+"/course/add",parse : function(response){
return response.data;
}
});
encodeURIComponent 函数 将中文的内容进行编码
rush:js;">
$('#addCourseBtn' ).click(function(){
var courseName = encodeURIComponent($('#myCourseName').val().trim(),'utf8');
var description = encodeURIComponent( $('#description').val().trim(),'utf8' );
var privilege = encodeURIComponent($('#privilege').val().trim(),'utf8');
var userId=$.cookie( 'userId');
var course = new AddCourse();
//传数据
course.fetch({data : $.param({ courseName : courseName,description : description,privilege : privilege,userId : userId})});
});
api定义,URLDecoder.decode函数进行解码
rush:js;">
@Controller
@RequestMapping("/course")
public class CourseController {
@Resource
private CourseService courseService;
@RequestMapping("/add")
//添加代码:编码修改
@ResponseBody
public Result add(String courseName,String description,String privilege,int userId){
String deCourseName;
String deDescription;
String dePrivilege;
Result result =new Result();
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 (UnsupportedEncodingException e) {
// Todo Auto-generated catch block
e.printstacktrace();
}
return result;
}
以上所述是小编给大家介绍的关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。