ajax + php + mysql:(另一个)问题与charsets
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" });
问题...
- 如果我把字符集报头在PHP中,字符是从数据库中获取正确的,但通过AJAX调用发送的'estrange'字符(重音,'ñ',...)没有得到正确的处理
- 如果我删除了charset头文件,我也遇到了相同的问题,但反过来。呼叫得到正确,但不是来自数据库的呼叫。
- 最后如果我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
以上是 ajax + php + mysql:(另一个)问题与charsets 的全部内容, 来源链接: utcz.com/qa/262280.html