解决backbone url请求中参数有中文,存入数据库是乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决backbone url请求中参数有中文,存入数据库是乱码相关的知识,希望对你有一定的参考价值。

最近项目用到了backbone 做前后端的分离方案,遇见了中文乱码问题,解决方案总结如下:
假设需要存一条课程记录到后台
 
model定义如下:
var AddCourse= Backbone.Model.extend({
      url:path+"/course/add",
      parse : function(response){
          return response.data;
      }
});
 
 
encodeURIComponent 函数 将中文的内容进行编码
$(‘#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函数进行解码
 
@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请求中参数有中文,存入数据库是乱码的主要内容,如果未能解决你的问题,请参考以下文章

Backbone.js 如何与 PHP 一起使用

http请求 url 传递参数(特殊字符)解决方法

处理 Chrome + Backbone 中的网络错误

Backbone.js URL 路由

如何解决Http请求参数中加号变空格问题

如何通过 pushState 在 Backbone 中使用 SEO 友好的 URL?