我正在通过一个小小的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 _
答案 0 :(得分:1)
这种情况下的问题可能存在于以下几个方面:为了确保utf8输入兼容性,你必须在几个地方检查输入:
如果您从表单中获取数据,请确保您说明您正在使用的字符集是由服务器声明的(例如,通过Apache上的AddCharset
)或更好,但使用{表示{1}}陈述。请注意,如果服务器声明编码为latin1且PHP将其设置为utf8,则显示可能是错误的。因此,强烈建议您使用内置元标记。
在PHP配置中,尝试使用行<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
。这应该是默认值,但只需检查。这将控制输出字符集,如果这与Apache服务器或页面字符集不一致,则utf8可能会以ASCII格式输出,从而导致出现问题。如果您无法访问php.ini,请使用ini_set在公共包含文件中设置此选项。
确保在连接到MySQL后执行default_charset = "utf8"
。这很重要,因为它使您与MySQL的连接成为UTF8。如果不这样做,您的UTF8编码的PHP字符串可能会再次在MySQL数据库中编码。这导致称为双重编码的问题。 编辑:虽然有些答案推荐使用SET NAMES,但不建议在PHP文档中使用
让您的数据库,表格和列字符集全部为utf8。我想你已经覆盖了这个。
如果你做了所有这些,你的应用程序应该可以正常使用PHP函数,尽管各种库可能搞砸了。
答案 1 :(得分:0)
mysql不会对您的数据进行urlencode。你的一些代码可以做到。 可能在选择的时间。
除此问题外,每次连接数据库时都应发出SET NAMES <encoding>
查询,其中<encoding>
是您的HTML页面编码