【发布时间】:2013-10-17 16:50:47
【问题描述】:
我正在为一个法国客户开发一个应用程序,该客户拥有其数据库 MySQL、排序规则 Latin1、字符编码 swedish_general_ci。我假设在 ISO 编码术语中对应于 ISO 8859-15 标准(它是单字节编码并包含“讨厌的”– 字符)。
在“mytable”表中有一个“mycolumn”列,其中包含以下记录/行: "Il est au cœur du débat" 我正在从 PHP 5.3 进行查询,基于在或不在此表的 comumn 中的关键字。查询是带有 LIKE 子句的简单 SELECT 并且一切都返回正确的结果,除非我从 PHP 执行此操作:
$tag = $_GET['search']; // the value of tag is ckecked as "cœ" (I printed in a file)
$res=query("SELECT * FROM `mytable` WHERE `mycolumn` LIKE '%" . $tag . "';");
它应该返回上面的“Il est au cœur du débat”结果,但是,它没有(count($res) 为零)。 如果我只是从代码中复制上述查询(我将 $tag 替换为“cœ”)并将其直接粘贴到 phpMyadmin 并执行 SQL,它可以正常工作,并显示该行作为结果。我提到重音字符不是问题。 我错过了什么?谢谢
【问题讨论】:
-
是的,它基于mysql_query()。它适用于不包含该字符的任何其他 SELECT
-
@GingerOpariti Try $res=query("SELECT * FROM
mytableWHEREmycolumnLIKE '%$tag%' ");` - 所以对于@987654325 周围的反引号不太好@哪里mycolumn -
@Fred:这是 MySQL 推荐的语法。此外,- 字符是唯一搞砸的不是语法
-
@GingerOpariti 如果你要使用它的 DEC-OCT-HEX-BIN 等效项呢?
-
@Fred:真的不明白......这个字符在一个字符串中,它是 SELECT 语句的一部分,那么如何“使用”?事实上这是我的问题
标签: php mysql character-encoding