MySQL SELECT проблема с кодировкой (кириллица, наверное) - PullRequest
2 голосов
/ 14 сентября 2010

Я работаю с проектом по экспорту данных из текстовых файлов в базу данных mysql. Текстовые файлы содержат как латинский, так и кириллический алфавиты.Вот ошибка:

выберите * из сигналов, где данные = "ГЭС";
+ ------ + ------ +
|id |данные |
+ ------ + ------ +
|1872 |АЭС |
|4671 |ГЭС |
+ ------ + ------ +

Почему я также получаю "АЭС"?Тот же результат, в котором есть "ВЭС", "БЭС" в запросе, но не "ФЭС" (у меня нет этих значений в таблице, но в случае "ВЭС" "БЭС" запрос возвращает тот же результат, что и«ГЭС», в случае «ФЭС» ничего не возвращает).

Мое единственное мнение - проблема с кодировкой.

1 Ответ

2 голосов
/ 14 сентября 2010

Необходимо учитывать две вещи: сопоставление и кодирование.

Кодирование определяет, как потоки байтов интерпретируются как текстовые символы, то есть как последовательности байтов отображаются на кодовые точки.Я предпочитаю использовать UTF-8 для всего, но некоторые устаревшие системы или внешние компоненты могут заставить вас конвертировать в и из других кодировок здесь и там.

Параметры сортировки устанавливают правила сравнения и сортировки.Каждая таблица имеет параметры сортировки по умолчанию, но при необходимости вы также можете переопределить ее для каждого запроса.В зависимости от сопоставления данная пара символов может считаться равной или не равной;например, сопоставление без учета регистра будет рассматривать «а» и «А» как равные, а сравнение с учетом регистра - нет.

Поэтому, чтобы решить вашу проблему, необходимо установить правильное сопоставление дляи убедитесь, что вы используете правильные кодировки для таблицы и соединения.

...