我正在尝试在我的MySQL数据库中存储一些数据。当我尝试输入特殊字符甚至 ø 或 звяф 等外来字符时,我希望它们存储为 html 实体(如 ő(
我认为这非常简单,只需使用 htmlentities((,但是当我存储数据时,我只得到数据库中的????。
有什么想法吗?
这是我现在使用的代码:
$sqlOrder="INSERT INTO data (
bad, cname, lor
)
VALUES (
'".htmlentities($b->getBad(), ENT_COMPAT, 'UTF-8')."', '".htmlentities($b->getCName(), ENT_COMPAT, 'UTF-8')."', '".htmlentities($b->getLor(), ENT_COMPAT, 'UTF-8')."'
)";
如前所述,数据库中的结果对于任何特殊字符(如 кршуцкыя 或 æåø(都是?????????的。
数据库的数据排序是什么? 默认情况下,大多数MySQL安装为新创建的数据库设置latin1_swedish_ci
而不是utf8_general_ci
。
更改数据库的排序规则,然后重试。
ALTER DATABASE [name of your database] CHARACTER SET utf8;
如果这是特定表,则可以按如下方式更改排序规则:
ALTER TABLE [name of your table] CONVERT TO CHARACTER SET utf8;
如果它是表中的特定列:
ALTER TABLE [name of your table] MODIFY [name of your column] [other settings] CHARACTER SET utf8 COLLATE utf8_general_ci;
或者,您可以导出当前数据库,使用此命令创建一个新数据库并重新导入数据:
CREATE DATABASE [name of your database] CHARACTER SET utf8 COLLATE utf8_general_ci;