• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

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

php 来源:Morillas 4次浏览

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

我遇到了字符集问题,我疯狂地找到解决方案。这是我有:

  • 我有一个MySQL数据库“latin1_spanish_ci”作为数据库,表中整理和田野中的每一个。
  • 一个html文件头部'< meta http-equiv =“Content-type”content =“text/html; charset = iso-8859-1”>’这个表格有一个表格。当按下按钮时,会调用一个Ajax,向PHP发送POST请求。调用’header(’Content-type:text/html; charset = iso-8859-1’)的PHP;’在顶部。这个PHP对数据库进行查询以获取数据列表。
  • AJAX调用如下:

    $阿贾克斯({ 网址: “llistat.php”, 类型: “POST”, 数据: { 部门:$( “#界” ).val(), cp:$(“#cp”)。val(), province:$(“#province”)。val(), free:$(“#free”)。val() }, 成功: 功能(数据){ $( “#结果”)HTML( “”); $( “#结果”)。追加(数据);} , 的contentType:“一个pplication/X WWW的窗体-urlencoded;字符集= ISO-8859-1″ });

问题…

  1. 如果我把字符集报头在PHP中,字符是从数据库中获取正确的,但通过AJAX调用发送的’estrange’字符(重音,’ñ’,…)没有得到正确的处理
  2. 如果我删除了charset头文件,我也遇到了相同的问题,但反过来。呼叫得到正确,但不是来自数据库的呼叫。
  3. 最后如果我d不要通过Ajax调用进行调用,而是直接提交表单,一切正常。字符被正确地发送以及来自数据库的信息。

所有这些过程出了什么问题?我猜(根据最后一点),通过AJAX调用进行调用或通过表单中的提交进行调用是有区别的。但是,这是什么区别?我究竟做错了什么?

谢谢。

===========解决方案如下:

$.ajax使用总是使用UTF-8的encodeURIComponent。你的流程出了什么问题,并不是在任何地方都使用UTF-8。

如果你现在还不能改变这个事实,你可以在服务器端从012F9转换为Windows-1252的ajax数据为mb_convert_encoding

需要注意的是:

  • 要浏览器ISO-8859-1意味着Windows的1252
  • 到MySQL LATIN1意味着Windows的1252
  • 对任何PHP函数ISO-8859-1意味着ISO-8859 -1
  • 对于除MySQL以外的任何内容,Windows-1252表示Windows-1252

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)