HI,我对此查询有疑问
SELECT * FROM table WHERE `name` LIKE '%tést%'
HMTL和SQL表都有utf-8编码,但不幸的是没有mysql_set_charset('utf-8')
而我不能够使用它。
我尝试使用iconv("UTF-8", "ISO-8859-1", $name)
,但查询仅与test
匹配。
我想匹配所有这些内容:test, tést, tèst, tëst
(因为它适用于mysql_set_charset
)
修改
SET NAMES utf8
更为可能......数据库 ,使用utf8编码,遗憾的是,内容是在没有mysql_set_charset
或SET NAMES
的网络上填充的。< / p>
目前,如果使用这些功能,结果会搞砸。
version()
5.1.41-3ubuntu12.9
EDIT2:
当我使用SET NAMES utf8
时,它只匹配tést
,看起来像tést
当我使用iconv("UTF-8", "ISO-8859-1", $name)
时,它仅匹配test
答案 0 :(得分:1)
我刚刚进行了一次快速测试,而MySQL的工作正如您所期望的那样。
也许这是你连接数据库的方式,你可以尝试执行SET NAMES'utf8';在执行查询之前,看看是否有帮助!
另外,请注意mysql_set_charset应该使用utf8,没有破折号!请参阅an example from PHP以确定!
干杯!
答案 1 :(得分:1)
在查询之前尝试:
mysql_query("SET NAMES 'utf8'", $conn);
*的 编辑 * 强>
显然,根据MySQL版本,您可能还需要使用:
mysql_query("SET CHARACTER SET utf8", $conn);
最后需要注意的是,数据库需要使用UTF-8字符集,以确保:
ALTER <database_name> DEFAULT CHARACTER SET utf8;
* 更多修改 *
阅读完您的编辑后,我认为这是您的HTML / PHP编码问题。在提交字符的页面上,请确保正确设置标题:
header('Content-Type: text/html; charset=UTF-8');
您还应该通过元标记设置:
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
然后使用mb_internal_encoding()
函数设置多字节编码:
mb_internal_encoding("UTF-8");
默认情况下,PHP使用ISO-8859-1。
答案 2 :(得分:0)
尝试使用所需的正则表达式(如
)进行regexpSELECT * FROM table WHERE name REGEXP #REGULAR EXP HERE#
答案 3 :(得分:0)
你试过SET NAMES吗?
mysql_query("SET NAMES utf8");