Mysql выберите с не азбуками - PullRequest
0 голосов
/ 30 октября 2011

У меня небольшая проблема, например, я добавляю в базу данных ссылку, содержащую некоторые символы, такие как: é, á, ą и другие подобные.Теперь моя проблема в том, что когда я хочу выбрать из базы данных эту ссылку, в базе данных эти символы автоматически кодируются (utf8), но когда я хочу выбрать что-то вроде

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

, не работают, потому чтомоя база данных была закодирована.Что я могу сделать здесь?

Я не знаю, как объяснить более точно, надеюсь, вы понимаете, что мне нужно.

Ответы [ 2 ]

3 голосов
/ 30 октября 2011

Вы передаете недопустимый URI в своем запросе:

http://tést.tld

URI состоят только из букв US-ASCII, é не соответствует таковому.Вы либо сохраняете это неправильно, но, скорее всего, вы, возможно, заметили, что вам нужно получить PUNY-CODE / правильную кодировку URL для этого URI.

Как вы храните эти URI в своей базе данных?Как действительные URI или просто как UTF-8?

Редактировать:

Вы сохраняете последовательности байтов utf-8 в кодировке в базе данных.Вам нужно разделить URI , который вы ищете, на его части, соответствующим образом кодировать части (например, urlencoding для части пути, puny-код для имени домена), пересоздать полный URI и выполнить поискдля этого в вашей базе данных.

3 голосов
/ 30 октября 2011

вы должны установить ваше соединение с БД в 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

И ваш оператор выбора также должен быть закодирован в utf-8.

...