Вопрос PHP по кодированию (latin1_swedish_ci vs utf8_unicode_ci) - PullRequest
0 голосов
/ 14 июня 2011

У меня вопрос по кодировкам. В моей базе данных MySQL я закодировал пользователей в latin1_swedish_ci (плохая идея). Теперь я подключаю свое приложение iPhone к Facebook и получаю список имен друзей, и я хотел бы посмотреть, есть ли у меня эти друзья в моем приложении. К сожалению, когда я пытаюсь сделать запрос, я получаю эту ошибку:

#1267 - Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_unicode_ci,COERCIBLE) for operation 'like' 

Так что в основном я пытаюсь смешать имя друга на Facebook (в utf8) с именами в моей dabatase (latin1).

Я не хочу переносить всю базу данных в utf8, я просто хотел бы знать, возможно ли в PHP проверить, совместима ли кодировка имени с latin1, или, по крайней мере, возможно ли кодировать все имена в latin1 и сделайте запрос, а если не просто пропустите имя.

Кто-нибудь из вас знает, возможно ли сделать что-то подобное? Спасибо,

Masiar

1 Ответ

1 голос
/ 14 июня 2011

Не совсем уверен, как вы ищете своих друзей в своем приложении - через окно поиска или что-то?Какова роль сценария PHP?

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

Выполните следующие 3 запроса каждый раз, когда вы устанавливаете соединение с БД, хотя я думаю, что первых 2 может быть достаточно для вас.

SET character_set_connection = utf8
SET character_set_client = utf8
SET character_set_results = utf8
...