【发布时间】:2011-08-23 14:21:21
【问题描述】:
我已将 PHP 字符集设置为 utf-8:
header('Content-Type: text/html; charset=utf-8');
我已将 MySQL 中的 currency 列设置为 varchar(1),排序规则为 utf8_unicode_ci。
但是,PHP 中的代码如下:
$currency = '€';
$sql = "UPDATE myTable SET currency = '$currency' WHERE user = '$user'";
mysql_query($sql);
在 MySQL 中产生以下字符:
â
如何让€ 符号正确存储在 MySQL 中?
【问题讨论】:
-
您是否有特殊原因不存储“E”,然后将其表示为屏幕上的欧元符号?在文本中,您有时无法避免存储特殊字符,但当我不必这样做时,并且它们不会更改为其他内容以确保验证不会出错至关重要,我宁愿通过存储来解决它'E'...
-
如果您要存储“E”而不是符号,您还不如遵守标准并使用 ISO 货币代码(例如“EUR”)...只要我们正在这样做,无论如何,让您的表示逻辑将货币代码转换为符号可能是一个更好的设计决策。 :)
-
只需执行以下操作:在
php.ini中设置default_charset = "utf-8"以上将PHP 的默认字符集更改为utf-8。还要在httpd.conf中更改 Apache 的字符集,如下所示:AddDefaultCharset UTF-8然后重新启动 Apache,希望您的问题会得到解决。请记住,您的数据库字符集也应该是 utf8。
标签: php mysql variables utf-8 scope