我有一个使用jQuery form plugin提交数据的表单。从那里它经过一些服务器端处理,最后存储在MySQL数据库中。
提交这些字符áâãäï
后,它们将以áâãäï'
的形式发送到服务器(在点击数据库之前)。日语字符等也会发生同样的事情。
我已经尝试过UTF-8和ISO-8859-1用于表单编码,页面编码,php服务器端编码和db编码。仍然没有运气。
答案 0 :(得分:2)
在内部,JavaScript使用UTF-16字符串,而encodeURIComponent()
等函数将字符编码为UTF-8,因此问题可能不是JavaScript代码。问题可能在您的PHP代码中。
服务器发送的每个页面(包括表单所在的页面)都必须包含标题Content-type: text/html;charset=UTF-8
。您可以使用Firebug的Net面板进行检查。
在进行任何查询之前,始终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。
答案 1 :(得分:1)
字符可能是从WORD(ISO-8859-1)粘贴的。 Ajax只需要UTF-8,因此在将它们发送到服务器之前,您必须在客户端上进行转换。