应该如何存储utf8_general_ci数据?

时间:2010-11-08 00:01:09

标签: php mysql utf-8 case-insensitive diacritics

我正在使用utf8_general_ci,应该如何存储数据?

我的意思是,如果我的varchar / text包含像áéíóúàèìòùçÇÀÉÌÒ这样的特殊字符,它们会像那样存储,或者它们会以某种方式转换?我正在进行 CASE / ACCENT INSENSITIVE 搜索,但有人告诉我我没有正确存储数据,所以我需要一个参考

对此非常困惑,即使我的ORDER BY无法正常工作,因为数据已被破坏(在我知道数据应该如何存储后我将转换我的数据库,表/ setnames已经是utf8_general_ci / utf8)

2 个答案:

答案 0 :(得分:1)

  

我正在使用utf8_general_ci,应该如何存储数据?

只需正确存放即可。 :)

说真的:你应该存储它,这样当你在phpMyAdmin或HeidiSQL等程序中通过UTF-8编码连接查看UTF-8编码的数据库时,你会看到实际的字符áéíóúàèìòùçÇÀÉÌÒ。没有更多的东西。

utf8_general_ci已经非常不敏感了

 á = a
 é = e

如果您使用LIKE子句columnname LIKE "searchterm"而不是columnname = "searchterm",它也会不区分大小写。

答案 1 :(得分:0)

您确定数据已损坏吗?从表中检索时,是否缺少所有重音? UTF-8是一个字符集,utf8_general_ci是一个整理。他们是不同的。如果您希望ORDER BY真正正确排序,您可能需要使用utf8_unicode_ci。整理主要是指搜索和排序,而不是存储。

你可以发布你的SHOW CREATE TABLE结果吗?