我试图找到与我的问题相似的东西,但我总是找到相反的情况......
这是交易(非常感谢任何帮助):
我的数据库 (innodb) 设置为 UTF8。基本上一切(服务器端、客户端、数据库、连接等)都设置为 UTF8 和 UTF8 general_ci 整理...
我的理解是 general_ci 使其不区分大小写,但也不区分重音。
在 phpmyadmin 中,查询类似 'a' = 'á' 的结果为真(“1”),而尝试从另一个站点的 php 表单中查询带重音的名称只会导致“0”。
问题是,我如何通过 php 表单执行选择,使所有内容都不敏感(如 melee = mélee、jose = JOSÉ 等)?
所有内容都设置为 UTF8,包括 php header 、“SET NAMES ('utf8') 以及所有这些都在 my.cnf 中设置.... 我的表单标签中也有一个“accept-charset="utf-8"”,但它是这样工作的: - “jose”只给我“jose%”条目... - 如果我想找到 JOSÉ,我不能简单地查询“jose”,最后一个 É“必须”是带有重音符号的大写字母(如 josÉ 或 JOSÉ),但如果我尝试选择“josé”将找不到任何东西“....
它们都在 utf8_general_ci 中,“show variables like '%character%'”给我带来了所有 UTF8...
名称正确存储在数据库中(使用 UTF8 字符,并且在页面中查看时,值显示正确),我可以通过 phpmyadmin 中的 SQL 比较“a”和“Ô没有问题,他们返回真...当我使用表单和与该数据库的连接时它就不起作用...字母不区分大小写,对,但重音不是(甚至不区分大小写),知道为什么那个?
我的 php 表单应该如何“发送”不区分大小写和重音的字符串?
最佳答案
这里有一些可能导致它的一般情况:
只是为了确定,您应该存储当前连接(mysql_connect 的结果),然后您应该将它作为参数传递给 mysql_query("SET NAMES 'utf8'",$conn_handler);
您的数据库是 UTF8,但是您的表和列呢?它们也是 UTF8 吗?
您的 View 是使用没有 BOM 的 UTF8 编码的吗?这可能会导致您在“André”中看到“É”字符。
如果两者都不起作用,您介意分享您连接到数据库的方式吗?
干杯!
关于php - 如何通过 PHP 表单使选择不区分重音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5436654/