【问题标题】:How can I store the '€' symbol in MySQL using PHP? [duplicate]如何使用 PHP 在 MySQL 中存储“€”符号? [复制]
【发布时间】: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


【解决方案1】:

您可以将其转换为€的HTML代码

【讨论】:

  • 解释反对意见:在 2011 年,使用 HTML 实体不再被视为良好做法。如果您在流程的每一步都正确编码(这是必须 无论如何),将不需要 HTML 实体,即使它们似乎可以解决手头的问题。
【解决方案2】:

确保您的脚本文件,包含该行的文件

$currency = '€';

编码为 UTF-8。您应该在您的编辑器或 IDE 的“另存为”对话框中有一个实现该效果的选项。

然后确保您的 连接 也是 UTF-8 编码的 - 默认情况下它是 ISO-8859-1。

连接数据库后,对于mySQL 5.0.7之前:

mysql_query("SET NAMES utf8");

对于 mySQL 5.0.7 及更新版本:

mysql_set_charset("utf8");

【讨论】:

    【解决方案3】:

    此页面上的“在 Web 上使用 UTF-8”部分给出了很好的概述:http://dev.mysql.com/tech-resources/articles/4.1/unicode.html

    【讨论】:

    • 此链接已失效。如果您可以在答案中直接发布相关信息会更好。
    猜你喜欢
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 2017-03-30
    • 1970-01-01
    • 2011-12-02
    • 2015-01-27
    相关资源
    最近更新 更多