首页 文章

ajax php mysql :(另一个)charsets的问题

提问于
浏览
0

我遇到了charset的问题,我疯狂地找到解决方案 . 这就是我所拥有的:

  • 我有一个带有'latin1_spanish_ci'的MySQL数据库作为数据库,表和每个字段的排序规则 .

  • 带有 Headers '<meta http-equiv= _2743439_ content= _2743440_ >'的html文件有一个表单 . 按下按钮时,会调用一个Ajax,它向PHP发送POST请求 .

  • 带调用的PHP 'header(' Content-type:text / html; charset = iso-8859-1 ');'在顶部 . 此PHP对数据库进行查询以获取数据列表 .

  • AJAX调用如下:

$ .ajax({url:“llistat.php”,类型:“POST”,数据:{sector:$(“#sector”) . val(),cp:$(“#cp”) . val(),省:$(“#province”) . val(),free:$(“#free”) . val()},success:function(data){$(“#results”) . html(“”); $(“#results”) . append(data);},contentType:“application / x-www-form-urlencoded; charset = iso-8859-1”});

问题...

  • 如果我在PHP中保留字符集 Headers ,则字符从数据库中正确获取,但通过AJAX调用发送的'estrange'字符(重音符号,'ñ',...)未正确显示 .

  • 如果我删除字符集 Headers 我有相同的问题,但反过来 . 调用中的字符是正确的,但不是数据库中的字符 .

  • 最后,如果我不通过Ajax调用进行调用,并且我直接提交表单,那么一切正常 . 正确发送字符和数据库中的信息 .

这个过程有什么问题?我猜(根据最后一点),通过AJAX调用或通过表单中的提交进行调用之间存在差异 . 但是,这是什么区别?我究竟做错了什么?

谢谢 .

1 回答

  • 1

    $.ajax 使用始终使用UTF-8的 encodeURIComponent . 您的流程出了什么问题,并不是到处都使用UTF-8 .

    如果你现在无法改变这个事实,你可以_a74ax48_在服务器端将ajax数据从UTF-8转换为Windows-1252 .

    注意:

    • 对于浏览器ISO-8859-1表示Windows-1252

    • To MySQL latin1表示Windows-1252

    • 对于任何PHP函数,ISO-8859-1表示ISO-8859-1

    • 对于除MySQL以外的任何内容,Windows-1252表示Windows-1252

相关问题