gpt4 book ai didi

php - 使用 PHP 和 MySQL,我如何正确地将智能引号写入数据库?

转载 作者:行者123 更新时间:2023-11-29 02:04:26 26 4
gpt4 key购买 nike

我有一个带有 CLEditor richtext control 的 PHP 网站在上面。当我尝试将欧元和英镑写入数据库时​​,字符通过得很好,因为我在包含页面 HTML、richtext 控件 IFRAME HTML 和 MySQL 表排序规则中将字符集设置为 UTF-8。在这方面一切都很好。但是,当我尝试编写 smart quotes 时,我最终在数据库中看到了这个输出:

This is a “testâ€.

(如果上面的内容在您的浏览器中没有正确显示,则测试词有类似拉丁语 a、欧元符号和单词前面的小 AE 符号,以及拉丁语 a 和欧元符号在它之后。)

当我使用 PHP 从数据库中读回该值以将其显示在页面上时,它最终变成带有问号和其他一些拉丁字符的黑色菱形。

我应该怎么做才能解决这个问题?

最佳答案

首先,确保您的 MySQL 表使用 UTF-8 作为其编码。如果是,它将如下所示:

mysql> SHOW CREATE TABLE Users (
...
) ENGINE=InnoDB AUTO_INCREMENT=30 DEFAULT CHARSET=utf8 |

接下来,确保您的 HTML 页面设置为显示 UTF-8:

<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
</head>
....
</html>

那么它应该可以工作了。


编辑:我故意不谈排序规则,因为我认为它已经被考虑过了,但为了大家的利益,让我在这个答案中添加更多内容。

你说,

I have the charset set to UTF-8 … in the MySQL table collation.

表格排序规则与字符集不同。

整理是自动尝试将一个字符集转换为另一个用于查询目的的行为。例如,如果您有一个 latin1 字符集和一个 UTF-8 排序规则,并且您执行类似 SELECT * FROM foo WHERE bar LIKE '%—%'; 的操作。 (UTF-8 U+2014) 在具有匹配 L+0151 U+2014 的 latin1 字符集的表上。

并非巧合...如果您将此 latin1 编码字符输出到 UTF-8 编码的网页上,您将得到以下内容:

This is a “testâ€.

这似乎正是您问题的输出。这是复制它的 HTML:

<?php
$string = "This is a “test”.";
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf8"/>
</head>
<body>
<p><?php echo $string; ?></p>
</body>
</html>

确保将此文件保存为 latin1...

要查看您的表设置的字符集,请运行此查询:

SELECT CCSA.character_set_name, TABLE_COLLATION FROM information_schema.`TABLES` T,
information_schema.`COLLATION_CHARACTER_SET_APPLICABILITY` CCSA
WHERE CCSA.collation_name = T.table_collation
AND T.table_schema = "database"
AND T.table_name = "table";

唯一您使用的正确结果(除非您使用多种非英语语言)是:

+--------------------+-----------------+
| character_set_name | TABLE_COLLATION |
+--------------------+-----------------+
| utf8 | utf8_general_ci |
+--------------------+-----------------+

感谢您的支持;-)

关于php - 使用 PHP 和 MySQL,我如何正确地将智能引号写入数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8964088/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com