Выберите строки MySQL с японскими символами
Кто-нибудь знает надежный метод (с MySQL или иначе) для выбора строк в базе данных, которые содержат японские символы? У меня есть много строк в моей базе данных, некоторые из которых имеют только буквенно-цифровые символы, некоторые из которых имеют японские символы.
5 ответов
Правила, когда вы хотите иметь проблемы с наборами символов:
при создании базы данных используйте кодировку utf8:
CREATE DATABASE _test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Убедитесь, что все текстовые поля (varchar и text) используют UTF-8:
CREATE TABLE _test.test ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE = MyISAM;
Когда вы устанавливаете соединение, сделайте это, прежде чем запрашивать / обновлять базу данных:
SET NAMES utf8;
С phpMyAdmin - Выберите UTF-8 при входе.
установите кодировку веб-страницы в utf-8, чтобы убедиться, что все данные публикации / получения будут в UTF-8 (или вам придется конвертировать это болезненно...). PHP-код (первая строка в файле php или, по крайней мере, перед любым выводом):
header('Content-Type: text/html; charset=UTF-8');
Убедитесь, что все ваши запросы написаны в кодировке UTF8. Если вы используете PHP:
6.1. Если PHP поддерживает код в UTF-8 - просто напишите свои файлы в UTF-8. 6.2. Если php скомпилирован без поддержки UTF-8 - конвертируйте ваши строки в UTF-8 следующим образом:
$str = mb_convert_encoding($str, 'UTF-8', '<put your file encoding here'); $query = 'SELECT * FROM test WHERE name = "' . $str . '"';
6.3.
Это должно сделать это.
Следуя полезному ответу NickSoft, я должен был установить кодировку соединения db, чтобы он заработал.
& CharacterEncoding=UTF-8
Затем SET NAMES utf8; казалось излишним
Как сказал Тенефф, просто используйте SELECT
,
При установке MySQL используйте UTF-8 в качестве кодировки. Затем, выбирая utf8_general_ci
как сопоставление должно делать работу.
Как сказал Frosty, просто используйте SELECT.
Посмотрите на японские символы с самым низким и самым высоким значением в диаграммах Юникода на http://www.unicode.org/roadmaps/bmp/ и используйте REGEXP. Он может использовать несколько разных областей символов, чтобы получить весь набор символов японского языка. Пока вы используете набор символов UTF-8 и объединение utf8_general_ci, вы должны иметь возможность использовать REGEXP '[a-gk-nt-z]', где ag представляет один диапазон символов Юникода из диаграмм, kn представляет другой диапазон, и т.п.
Количество японских символов ограничено. Вы можете искать их, используя
SELECT ... LIKE '%カ%'
В качестве альтернативы вы можете попробовать их шестнадцатеричное наименование -
SELECT ...LIKE CONCAT('%',CHAR(0x30ab),'%')
Вы можете найти это японское подмножество UTF-8 http://www.utf8-chartable.de/unicode-utf8-table.pl?start=12448
Предположим, вы используете набор символов UTF-8 для полей, запросов, результатов...