Mysql选择非a-z字符

时间:2011-10-30 12:50:45

标签: php mysql select utf-8 uri

我有一点问题,例如我在数据库中添加一个链接,其中包含一些字符,如:é,á,±和其他像这样的字符。现在,我的问题是当我想从数据库中选择这个链接时,在数据库中这些字符是自动编码的(utf8),但是当我想选择类似

的东西时
SELECT * FROM `table` WHERE `link`='http://tést.tld'

不起作用,因为在我的数据库中é被编码了。我能在这做什么?

我不知道如何更准确地解释,我希望你明白我的需要。

2 个答案:

答案 0 :(得分:3)

你应该将你的数据库连接设置为utf-8; 如果它是php那么:

$sqlHandle= mysql_connect('localhost','user1','pass1',TRUE); 
mysql_set_charset('utf8', $sqlHandle); 
mysql_query("SET NAMES utf8");

http://php.net/manual/en/function.mysql-set-charset.php

你的select语句也需要用utf-8编码。

答案 1 :(得分:3)

您在查询中传递了无效的URI:

http://tést.tld

URI只包含US-ASCII字母,é不是这样。你要么存储错误,但大多数情况下你可能已经过度了解你需要获得该URI的PUNY-CODE /正确的url编码。

您如何将这些URI存储到数据库中?作为有效的URI还是UTF-8?

修改

将utf-8字节序列urlencoded存储到数据库中。你需要split the URI你正在寻找它的部分,相应地编码部分(例如路径部分的urlencoding,域名的代码),重新构建完整的URI并在你的内部搜索它数据库中。