Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从ajax表单到MySQL获取非英语字符_Php_Javascript_Utf 8_Character Encoding_Iso 8859 1 - Fatal编程技术网

Php 如何从ajax表单到MySQL获取非英语字符

Php 如何从ajax表单到MySQL获取非英语字符,php,javascript,utf-8,character-encoding,iso-8859-1,Php,Javascript,Utf 8,Character Encoding,Iso 8859 1,我有一个表单可以使用提交数据。从这里开始,它经过一些服务器端处理,最后存储在MySQL数据库中 提交这些字符后,它们将作为ÃÃÃ、ÃÃÃÃ发送到服务器(在访问数据库之前)。同样的事情也发生在日文字符上,等等 我尝试了UTF-8和ISO-8859-1的表单编码、页面编码、php服务器端编码和db编码。仍然不走运。字符可能是从WORD(ISO-8859-1)粘贴的。Ajax只需要UTF-8,因此在将它们发送到服务器之前,您必须在客户机上转换它们 请参阅:在内部,JavaScript与UTF-16字符

我有一个表单可以使用提交数据。从这里开始,它经过一些服务器端处理,最后存储在MySQL数据库中

提交这些字符后,它们将作为
ÃÃÃ、ÃÃÃÃ
发送到服务器(在访问数据库之前)。同样的事情也发生在日文字符上,等等


我尝试了UTF-8和ISO-8859-1的表单编码、页面编码、php服务器端编码和db编码。仍然不走运。

字符可能是从WORD(ISO-8859-1)粘贴的。Ajax只需要UTF-8,因此在将它们发送到服务器之前,您必须在客户机上转换它们


请参阅:

在内部,JavaScript与UTF-16字符串和函数(如
encodeURIComponent()
将字符编码为UTF-8)配合使用,因此问题可能不是JavaScript代码。问题可能在PHP代码中

  • 服务器发送的每个页面(包括表单所在的页面)都必须具有标题
    内容类型:text/html;字符集=UTF-8
    。您可以使用Firebug的网络面板来检查这一点

  • 在进行任何查询之前,请始终检查您的MySQL连接。否则,MySQL会将UTF-8字符串的每个字节解释为一个拉丁字符,这很容易导致您所描述的结果。使用以下代码:

    mysql_query("SET NAMES 'utf8'");    // works in old versions of PHP (< 5.2)
    mysql_set_charset('utf8',$conn);    // works in PHP 5.2+
    
    mysql_查询(“设置名称'utf8'”);//适用于旧版本的PHP(<5.2)
    mysql_set_字符集('utf8',$conn);//在PHP5.2中工作+
    
  • 请记住,某些(并非所有)PHP字符串函数将被删除


在提交字符之前,您是否尝试过在javascript中对字符进行URL编码
encodeURIComponent()
应该可以工作。字符就像是从键盘添加的一样。至于引用的链接,我看不到问题的解决方案(除了您建议我在发送之前“转换”它们之外),您能详细说明一下吗?$.ajaxSetup({scriptCharset:“utf-8”,contentType:“application/json;charset=utf-8”});我把范围缩小到php的序列化函数,这是罪魁祸首。谢谢