MYSQL强调字符é显示为%E9

时间:2010-05-30 05:40:27

标签: mysql actionscript-3

我正在通过一个小小的PHP脚本将数据从as3推送到MSQL!

我的问题是我所有突出的字符都显示为奇怪的iso字符。

示例:é显示%E9

很明显,我的字段的整理设置为 utf8_general_ci

即使我尝试从没有as3的简单php脚本中插入数据,我也会犯同样的错误。

<?php

mysql_connect("***", "***", "***") or die("Error :" .mysql_error());
mysql_select_db("***");


$query ="INSERT INTO test (message) values ('éèàïû')";

mysql_query($query) or die("Error updating DB");


?>

关于我做错了什么以及如何解决这个问题的任何想法?

提前致谢。

JK _

2 个答案:

答案 0 :(得分:1)

这种情况下的问题可能存在于以下几个方面:为了确保utf8输入兼容性,你必须在几个地方检查输入:

  1. 如果您从表单中获取数据,请确保您说明您正在使用的字符集是由服务器声明的(例如,通过Apache上的AddCharset)或更好,但使用{表示{1}}陈述。请注意,如果服务器声明编码为latin1且PHP将其设置为utf8,则显示可能是错误的。因此,强烈建议您使用内置元标记。

  2. 在PHP配置中,尝试使用行<meta http-equiv="Content-Type" content="text/html; charset=utf-8">。这应该是默认值,但只需检查。这将控制输出字符集,如果这与Apache服务器或页面字符集不一致,则utf8可能会以ASCII格式输出,从而导致出现问题。如果您无法访问php.ini,请使用ini_set在公共包含文件中设置此选项。

  3. 确保在连接到MySQL后执行default_charset = "utf8"。这很重要,因为它使您与MySQL的连接成为UTF8。如果不这样做,您的UTF8编码的PHP字符串可能会再次在MySQL数据库中编码。这导致称为双重编码的问题。 编辑:虽然有些答案推荐使用SET NAMES,但不建议在PHP文档中使用

  4. 让您的数据库,表格和列字符集全部为utf8。我想你已经覆盖了这个。

  5. 如果你做了所有这些,你的应用程序应该可以正常使用PHP函数,尽管各种库可能搞砸了。

答案 1 :(得分:0)

mysql不会对您的数据进行urlencode。你的一些代码可以做到。 可能在选择的时间。

除此问题外,每次连接数据库时都应发出SET NAMES <encoding>查询,其中<encoding>是您的HTML页面编码