【问题标题】:What MySQL collation/character set should I use for English and Spanish?我应该为英语和西班牙语使用什么 MySQL 排序规则/字符集?
【发布时间】:2011-12-15 05:26:16
【问题描述】:

我正在使用 MySQL 构建一个用于英语和西班牙语的 PHP5 应用程序。我应该将字符集和排序规则设置为 UTF8,然后使用 mbstring 将所有内容转换为数据库吗?或者,我应该使用某种同时支持英语和西班牙语的拉丁字符集吗?该应用程序仅适用于美国,不需要支持全部国际语言。

我在大多数项目中都使用 CodeIgniter。我刚刚注意到 CI 数据库设置。

$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';

所以,我认为这两个设置应该不错。我假设我需要重置 MySQL 数据库字符集以及数据库和表上的任何排序规则设置?

【问题讨论】:

  • 坚持使用 utf8。无论您现在支持多少(或多少)语言,当 PHB 不可避免地添加更多语言时,现在使用 utf8 将消除对字符集转换的需要。

标签: php mysql character collation


【解决方案1】:

在数据库中的php 中都将字符集设置为UTF8。

在数据库的所有表中使用排序规则utf8_latin_ci

见:http://dev.mysql.com/doc/refman/5.5/en/charset-general.html

【讨论】:

  • 据我了解,排序规则会影响比较。从比较的角度来看,uft8_latin_ci 会使 LIKE 搜索或多或少匹配吗? A 会匹配 À、Â 和其他人吗?
  • 排序规则会影响排序顺序比较。不是 100% 确定什么匹配什么。我建议做一些实验。我认为AÀÂ 不匹配,因为它们听起来不一样。
  • @jjwdesign, utf8_latin_ci 并不新鲜,它已经存在很多年了。
  • 我似乎也有同样的问题。对于全新安装的 XAMPP 'utf8_latin_ci' 不是一个选项。有几个 UTF8 通用选项和一个 unicode。还有一堆特定的外语,但没有拉丁语。好吧,有一个完整的拉丁部分,但那不是 utf8(只要它被标记)
【解决方案2】:

我说葡萄牙语,所以我在数据库中使用 utf8_general_ci,在我的 html 标头中使用 charset=UTF-8,并且当我的 Connection 类打开链接以强制在通信中进行 utf8 排序时,我在我的 Connection 类中运行一系列命令。这不会以明显的方式影响性能,因此无论您使用什么语言,您都可以简单地使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-18
    • 2012-06-17
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多