我正在使用utf8_general_ci,应该如何存储数据?
我的意思是,如果我的varchar / text包含像áéíóúàèìòùçÇÀÉÌÒ这样的特殊字符,它们会像那样存储,或者它们会以某种方式转换?我正在进行 CASE / ACCENT INSENSITIVE 搜索,但有人告诉我我没有正确存储数据,所以我需要一个参考
对此非常困惑,即使我的ORDER BY无法正常工作,因为数据已被破坏(在我知道数据应该如何存储后我将转换我的数据库,表/ setnames已经是utf8_general_ci / utf8)
答案 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结果吗?