2

我试图找到与我的问题相似的东西,但我总是发现相反的情况......

这是交易(非常感谢任何帮助):

我的数据库(innodb)设置为 UTF8。基本上所有内容(服务器端、客户端、数据库、连接等)都设置为 UTF8 和 UTF8 general_ci 排序规则...

我的理解是,general_ci 使其不区分大小写,但也使其不区分重音。

在 phpmyadmin 中,查询 'a' = 'á' 之类的结果为真(“1”),尝试从另一个站点的 php 表单中查询带有重音符号的名称只会导致“0”。

问题是,我如何通过 php 表单执行选择,这使得一切都变得不敏感(比如 melee = mélee、jose = JOSÉ 等)?

一切都设置为 UTF8,包括 php 标头、“SET NAMES ('utf8') 以及所有这些都设置在 my.cnf.... 我的表单标签中还有一个“accept-charset="utf-8"” ,但这就是它的工作原理:-“jose”只给了我“jose%”条目...-如果我想找到 JOSÉ,我不能简单地查询“jose”,最后一个 É“必须”就是那个带重音符号的大写字母(如 josÉ 或 JOSÉ),但如果我尝试选择“josé”...,将找不到任何内容。

它们都在 utf8_general_ci 中,“显示像 '%character%' 这样的变量”给我带来了所有 UTF8...

名称正确存储在数据库中(使用 UTF8 字符,在页面中查看时,值显示正确),我可以通过 phpmyadmin 中的 SQL 比较“a”和“Ô没有问题,它们返回 true。 ..当我使用表单和与该数据库的连接时,它就不起作用了……字母不区分大小写,对,但是重音不是(甚至不区分大小写),知道为什么吗?

我的 php 表单应该如何“发送”大小写和重音不敏感的字符串?

4

1 回答 1

-1

以下是可能导致它的一些一般情况:

  1. 可以肯定的是,您应该存储当前连接(mysql_connect 的结果),然后您应该将其作为参数传递给 mysql_query("SET NAMES 'utf8'",$conn_handler);

  2. 您的数据库是 UTF8,但是您的表和列呢?它们也是UTF8吗?

  3. 您的视图是用没有 BOM 的 UTF8 编码的吗?这可能会导致您在“André”中看到“é”字符。

如果两者都不起作用,您介意分享您连接到数据库的方式吗?

干杯!

于 2011-03-26T15:57:16.187 回答