1

每次我做一个新项目时,我都会遇到麻烦,因为我忘记使用 UTF-8 创建数据库排序规则,或者有一些我没有看到的字符漏掉了,比如 é/à/.. 还有双.. 或三重... 似乎很讨厌。我通常使用mysqli_real_escape_string来确保他将字符写掉,当我打印它们时,我使用htlmentities。但这并不适用于所有角色,当然也不适用于 double .. 或tripple ... 。

设置项目时是否应牢记一般规则/准则,这样我就不会对这些特殊字符感到困扰?

4

1 回答 1

1

在设置项目时,我应该牢记一般规则/准则吗?

当然。
始终设置您的数据库连接字符集以匹配您的 HTML 页面的实际字符集。

说,你的页面是 utf-8,然后发出

mysqli_set_charset($conn,'utf8');

连接后立即

您的页面在 Windows-1251 中,然后制作它

mysqli_set_charset($conn,'cp1252');

等等

还始终用于mysqli_real_escape_string格式化您要动态添加到查询中的字符串文字
, 并在将用户输入htmlspecialchars()打印回 HTML 页面时使用

更新:
您还需要使用支持所有必需字符的字符集设置表(UTF-8 是首选默认值)。

CREATE TABLE `table` (
    ...
) DEFAULT CHARSET=utf8

在创建具有此类定义的表时,您的数据中将永远不会有 ?s

于 2013-01-29T08:47:48.883 回答