我有一点问题,例如我在数据库中添加一个链接,其中包含一些字符,如:é,á,±和其他像这样的字符。现在,我的问题是当我想从数据库中选择这个链接时,在数据库中这些字符是自动编码的(utf8),但是当我想选择类似
的东西时SELECT * FROM `table` WHERE `link`='http://tést.tld'
不起作用,因为在我的数据库中é被编码了。我能在这做什么?
我不知道如何更准确地解释,我希望你明白我的需要。
答案 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并在你的内部搜索它数据库中。