我有一个使用 jQuery form plugin 提交数据的表单。从那里它经过一些服务器端处理并最终存储在 MySQL 数据库中。
提交这些字符áâãäï
后,它们将作为áââäï¤â'
发送到服务器(在访问数据库之前)。日语字符等也会发生同样的情况。
我已经尝试了 UTF-8 和 ISO-8859-1 的表单编码、页面编码、php 服务器端编码和 db 编码。还是没有运气。
最佳答案
在内部,JavaScript 使用 UTF-16 字符串,并且诸如 encodeURIComponent()
之类的函数将字符编码为 UTF-8,因此问题可能不是 JavaScript 代码。问题可能出在您的 PHP 代码中。
服务器发送的每个页面(包括表单所在的页面)都必须具有 header
Content-type: text/html;charset=UTF-8
。您可以使用 Firebug 的网络面板进行检查。始终set the character encoding在进行任何查询之前先检查您的 MySQL 连接。否则,MySQL会将UTF-8字符串的每个字节解释为Latin-1字符,这很容易导致您所描述的情况。使用如下代码:
mysql_query("SET NAMES 'utf8'"); // works in old versions of PHP (< 5.2) mysql_set_charset('utf8',$conn); // works in PHP 5.2+
请记住,一些(不是全部)PHP 字符串函数将 mangle Unicode text .
关于php - 如何从ajax形式获取非英文字符到MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4809890/