我有一个Mysql数据库(在utf8_general_ci中)并且必须查询包含特殊字符的列。问题是:包含特殊字符的查询不会检索任何结果 - 但包含这些字符的常规版本的查询会执行。UTF8数据库查询和特殊字符
举例来说,如果我要查询单词“ETE”:
- SELECT ... WHERE LIKE%ETE%列将无法正常工作。
- SELECT ... WHERE column LIKE%ete%将工作!
这个问题必须是由于我的编码(两个查询都直接在phpMyAdmin中完成)。
我使用PDO,并按照这里的指令(http://stackoverflow.com/questions/279170/utf-8-all-the-way-through)和连接到数据库时,执行exec(“SET CHARACTER SET utf8“)和exec(”SET collation_connection ='utf8_general_ci'“)。令我困扰的是,除了这个搜索查询之外,该网站对于显示和数据库似乎都可以很好地与utf8一起工作。
我认为我可以对包含特殊字符的字符串进行transliterate_to_ascii操作。然而,我担心这个选项并不理想,特别是对于非欧洲语言。 非常感谢您的帮助!
后立即运行mysql的
SET NAMES utf8;
显示你正在使用 –@Pekka用于查询的代码:SELECT * FROM翻译WHERE translations.content例如:SEARCH_TERMS + $查询 - > bindParam(': search_terms',$ search_terms) – Raphael
显示您用于查询的完整代码 –