2014-01-06 1 views
1

Я работаю над проектом, где мне нужно добавить функции поиска в поля со специальными символами. К сожалению, поля, которые мне нужны для поиска, не были правильно закодированы.Ошибка ввода нечувствительности к регистру: COLLATION 'utf8_general_ci' недопустим для CHARACTER SET 'latin1'

Я хочу найти поле для слова kèku но только ввести слово keku (нет акценты).

Проблема возникает в том, что поля возвращают такие вещи, как Wèmi kèku sapà © lee. вместо Wèmi kéku sapëlee.

Я установил, что, выполнив следующий запрос:

select CONVERT(CAST(CONVERT(text USING latin1) AS BINARY) USING utf8) as 'textlenape' 
from samples_lenape where text_english like '%bright%' 

Это возвращает текст, я хочу, но когда я хочу сделать это дело нечувствительным путем добавления collate utf8_general_ci к концу моего запроса, я получаю следующее сообщение об ошибке:

COLLATION 'utf8_general_ci' is not valid for CHARACTER SET 'latin1'

Если я не сверить результаты запроса, я не могу найти keku потому что я получаю пустой результат задавать. Любые идеи о том, как мне нужно преобразовать это, чтобы иметь возможность делать поиск без учета регистра? Я не хочу изменять данные таблицы, потому что остальная часть сайта предположительно сломается, если я это сделаю.

+1

0 Коментариев: 1 Кодировка для текста: –

+1

Я ударил эту ошибку в прошлом, хотя она была на MSSQL 2005 ... она может вам помочь (извините, если это не так) http://stackoverflow.com/questions/3859085/force-t- sql-query-to-be-case-sensitive-in-ms – Twelfth

+0

Я не вижу нигде в конфигурации этого приложения, что набор символов изменен, поэтому я предполагаю, что это UTF-8. Как я могу проверить? –

ответ

0

Я понял. Я должен был выбрать все и сделать преобразование/сопоставление в моей статье WHERE.

select * 
from samples_lenape 
where CONVERT(CAST(CONVERT(text USING latin1) AS BINARY) USING utf8) like _utf8 '%keku%' 
collate utf8_general_ci 
Смежные вопросы