【发布时间】:2012-10-10 16:38:17
【问题描述】:
我在使用 php 将某些字符输入到我的 mysql 数据库时遇到了一些问题。我正在做的是将用户输入的文本提交到数据库。我无法弄清楚我需要更改什么以允许将任何类型的字符放入数据库并通过 php 打印出来。
我的 MySQL 排序规则是:latin1_swedish_ci
就在我将文本从表单发送到数据库之前,我在数据上使用了 mysql_real_escape_string()。
以下示例
这段文字:
�People are just as happy as they make up their minds to be.�
� Abraham Lincoln
假设看起来像这样:
“People are just as happy as they make up their minds to be.”
― Abraham Lincoln
【问题讨论】:
-
为什么不使用 UTF-8 排序规则?
-
Latin1 不是 UTF-8。因此,像
“和―这样的 latin1 未涵盖的字符被 Mojibake 处理也就不足为奇了。 -
latin1 是我猜的默认值,我从来没有,也仍然不明白哪种排序规则最适合使用,所以我一直使用它。我之前尝试过 UTF-8 排序规则,但似乎没有解决问题
-
那是因为它不是完整的解决方案。您的整个程序从头到尾都需要使用 UTF-8。
-
请注意,表排序规则与表字符集不同。排序规则仅定义字符的排序顺序(通常取决于区域设置,例如瑞典语,因为您最初在那里)。因此,即使您尝试使用 UTF-8 的表排序规则,如果您不使用 UTF-8 的表字符集,它也不会接受 UTF-8 字符。
标签: php mysql utf-8 character-encoding collation