【发布时间】:2012-04-11 02:19:00
【问题描述】:
在浏览了大约两打帖子之后,我被正式难住了。我有一个带有 utf8_general_ci 整理列的数据库。使用 PHPMyAdmin,我能够正确地查看表中的 UTF-8 数据(至少据我所知。)我认为我想做的事情很简单。数据查询过很多方式,只想回显一下utf-8的值:
echo bin2hex("more…"); //note "…" is a special character
6d 6f 72 65 e2 80 a6 (Hex Value)
但是,如果我只是 echo $row->value 我得到:
6d 6f 72 65 85
它提供的 UTF-8 编码:
6d 6f 72 65 c2 85
我读过的大多数帖子都说要使用 mysql_set_charset("utf8") 但这确实搞砸了:
6d 6f 72 65 26 61 63 69 72 63 3b 80 26 62 72 76 62 61 72 3b
最后使用 mysql_set_charset("utf8") & utf8_encode($var):
6d 6f 72 65 26 61 63 69 72 63 3b c2 80 26 62 72 76 62 61 72 3b
我也尝试在 PHP 中设置 UTF8 设置。 Godaddy 使这变得更加困难,所以我使用 ini_set 完成了。但是 mbstring.encoding_translation 不会打开。
// UTF8 settings
ini_set('mbstring.language', 'Neutral');
ini_set('mbstring.internal_encoding', 'UTF-8');
ini_set('mbstring.http_input', 'UTF-8');
ini_set('mbstring.http_output', 'UTF-8');
ini_set('mbstring.encoding_translation', 'On');
ini_set('mbstring.detect_order', 'auto');
ini_set('mbstring.substitute_character', 'long');
关于我需要做什么的任何提示?
【问题讨论】:
-
您是否尝试过How to handle UTF-8 in a web app 的“清单”?向我们展示一些代码,了解您如何准确地从数据库中插入和检索数据。
-
@deceze 我已经完成了大部分工作。我通过将字符复制粘贴到 PHPMyAdmin 来填充数据。我可以运行一个 select hex(field) 并从 mysql 获得正确的值。我也没有为从数据库中检索数据做任何特别的事情。还有什么我可以测试的吗?
-
上述文章中的完整测试脚本是否适合您?
-
@deceze 它似乎工作正常。这应该可以帮助我缩小搜索范围。