@HexUserHex

Проблема с кодировкой в mysql при сохранении 'не печатаемых' символов?

Добрый день,

Возникла задача сохранять в БД большой объём данных для дальнейшего быстрого поиска по этому массиву, трудность в том что текст может быть на различных языках(иероглифы, арабские символы, итд).

Как на данный момент я это пробую реализовать:
если получаю строку состоящую только из 'печатаемых' символов(что я проверяю методом isprintable()) то она сразу добавляется в мой словарь и далее сохраняется в БД
если получаю строку которая содержит 'не печатаемые' символы то ее вначале перевожу в utf-8 и далее пробую сохранять в БД.

Пример:
if some_string.text.isprintable():
data['name'] = str_filter(actual_name.text)
else:
data['name'] = actual_name.text.encode('utf-8')

#здесь мой input.....

Вопросы:
1. Есть символы которые определяются как печатаемые и после 'удачного' сохранения в базе я их там просто не нахожу, а точнее нахожу на их месте четыре вопросительных знака "????" вот один такой: ""
2. К примеру у меня получилось сохранить в базу текст в какой то кодировке, для дальнейшего поиска с использованием LIKE мне указывать просто коды иероглифов?

Заранее извиняюсь если вопрос задан не совсем технически точно
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
karabanov
@karabanov
Системный администратор
База вероятно не в UTF-8, если так, то конвертируй базу. Используй сравнение utf8mb4_0900_ai_ci, тогда будет возможность корректно работать с многобайтовыми символами.

Ещё проверь, что скрипты в UTF-8.

PS
What's the difference between utf8_general_ci and ...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы