编辑:在收到我原来的帖子的反馈后,我修改了文本来澄清我的问题。
我有以下查询(伪代码):
$conn = mysql_connect('localhost', 'mysql_user', 'mysql_password');
mysql_query("SET NAMES 'utf8'; COLLATE='utf8_danish_ci';");
mysql_query("SELECT id FROM myTable WHERE name = 'Fióre`s måløye'", $conn);
这将返回0行。
在我的日志文件中,我看到了:
255 Connect root@localhost on
255 Query SET NAMES 'utf8'; COLLATE='utf8_danish_ci'
255 Init DB norwegianfashion
255 Query SELECT id FROM myTable WHERE name = 'Fióre`s måløye'
255 Quit
-
如果我直接在phpmyadmin中运行查询,就会得到结果。
-
表编码:UTF-8
-
HTML页面编码:UTF-8
-
我可以添加(从表单输入)名称使用重音符号的记录(例如“fi_3;re's h_ elberg”)。
-
使用->“name like'$labelname%”,可以读取带有重音的记录。
-
数据库中的信息看起来不错
我不知道为什么我不能选择任何名字带有重音字符的行。
我真的希望有人能帮助我。
更新1:
我已达成妥协。我将在存储数据时使用htmlentities转换重音符号,在从数据库检索数据时使用html_entity_解码。这似乎奏效了。
到目前为止,我看到的唯一缺点是,我无法使用phpmysql读取明文中的名称。