【发布时间】:2011-11-23 20:39:32
【问题描述】:
我将字符串存储在 Mysql 数据库中。
一些字符串有单引号,然后像这样存储:
人民的
这是存储这些字符串的正确方法还是我应该设置不同的 mysql 排序规则?
我尝试了以下没有运气....
utf8_general_ci
latin1_swedish_ci
【问题讨论】:
我将字符串存储在 Mysql 数据库中。
一些字符串有单引号,然后像这样存储:
人民的
这是存储这些字符串的正确方法还是我应该设置不同的 mysql 排序规则?
我尝试了以下没有运气....
utf8_general_ci
latin1_swedish_ci
【问题讨论】:
您在哪里设置排序规则?您应该在三个地方使用 UTF-8:
作为包含字符数据的每一行的排序规则。您可以为表或数据库设置默认排序规则,以便新列选择它,但如果您已经有一个表,更改其默认排序规则不会更改现有行的排序规则。
作为应用程序和 MySQL 之间连接的编码。这可以使用 SET NAMES 语句手动设置,或者更好的是,使用适合您环境的 API 调用(例如 PHP 中的 mysql_set_charset() 或 Python MySQLdb 中 connect() 的 charset 参数)。
在您的输出中。例如,如果生成网页,则使用 Content-Type: text/html;charset=utf-8 标头/元。
您可以通过始终使用 Latin-1 将字符串“People's”存储为 UTF-8-hidden-in-Latin-1 “People’s”,因为您仍然会得到与您输入的字节相同。但这样您就不会从非 ASCII 字符的排序或不区分大小写的比较中获得合理的结果。
【讨论】: