Выберите строки MySQL с японскими символами

Кто-нибудь знает надежный метод (с MySQL или иначе) для выбора строк в базе данных, которые содержат японские символы? У меня есть много строк в моей базе данных, некоторые из которых имеют только буквенно-цифровые символы, некоторые из которых имеют японские символы.

5 ответов

Решение

Правила, когда вы хотите иметь проблемы с наборами символов:

  1. при создании базы данных используйте кодировку utf8:

    CREATE DATABASE  _test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
    
  2. Убедитесь, что все текстовые поля (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;
    
  3. Когда вы устанавливаете соединение, сделайте это, прежде чем запрашивать / обновлять базу данных:

    SET NAMES utf8;
    
  4. С phpMyAdmin - Выберите UTF-8 при входе.

  5. установите кодировку веб-страницы в utf-8, чтобы убедиться, что все данные публикации / получения будут в UTF-8 (или вам придется конвертировать это болезненно...). PHP-код (первая строка в файле php или, по крайней мере, перед любым выводом):

    header('Content-Type: text/html; charset=UTF-8');
    
  6. Убедитесь, что все ваши запросы написаны в кодировке 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 для полей, запросов, результатов...

Другие вопросы по тегам