UTF8编码带有特殊的外来字符

时间:2013-11-21 10:19:23

标签: php mysql

PHP代码如下:

trim(strtolower(utf8_encode($res->translation))) == trim(strtolower(utf8_encode($ph)))
例如,

返回false,例如:$res->translation = "Bottines À Talons Hauts"$ph = "bottines à talons hauts"。问题应该是一个奇怪的À字母,因为其他单词完全匹配。

需要提到的是$res->translation来自MySQL,而$ph是来自HTML页面中textarea的短语。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

http://www.php.net/manual/en/function.strtolower.php

  

返回字符串,其中所有字母字符都转换为小写。

     

请注意,'alphabetic'由当前区域设置决定。这意味着在默认的“C”语言环境中,诸如umlaut-A(Ä)之类的字符将不会被转换。

这应该使用mb_strtolower和强制UTF-8来解决

trim(mb_strtolower(utf8_encode($res->translation),'UTF-8')) == trim(mb_strtolower(utf8_encode($ph),'UTF-8'))

答案 1 :(得分:0)

可能需要使用utf8编码建立数据库连接。

建立连接时请尝试以下操作:

$link = mysql_connect('localhost', 'user', 'password');
mysql_set_charset('utf8',$link);

注意:尽管

,最好使用mysqli或PDO