кодировка в MySQL

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Re: кодировка в MySQL

Сообщение Pirr » 30.10.2009 15:57:04

GAMER писал(а):Попробуй отправить запрос set names utf8

Попробовал, не помогает :(
Аватара пользователя
Pirr
новенький
 
Сообщения: 21
Зарегистрирован: 21.10.2009 11:50:46

Re: кодировка в MySQL

Сообщение GAMER » 30.10.2009 15:59:50

1. Чистый запрос или после предыдущих? Попробуй чистый (сразу после подключения к серверу)
2. Версия Лазаруса какая?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: кодировка в MySQL

Сообщение Pirr » 30.10.2009 16:10:29

GAMER писал(а):1. Чистый запрос или после предыдущих? Попробуй чистый (сразу после подключения к серверу)
2. Версия Лазаруса какая?

1. Чистый, и у меня пока один запрос SELECT * FROM table
2. Lazarus 0.9.28

Попробовал создать новую таблицу, и указал ей кодировку при создании utf8, всё заработало, русские буквы видно. Но как же работать с таблицами в latin1 ?
Аватара пользователя
Pirr
новенький
 
Сообщения: 21
Зарегистрирован: 21.10.2009 11:50:46

Re: кодировка в MySQL

Сообщение GAMER » 30.10.2009 16:17:25

Такая проблема возникает, когда данные в таблицах храняться не в той кодировке, в которой указано их хранение.

Моя цитата с другого форума:
А консольный клиент почему не используешь?

Мне кажеться, что у тебя следующая проблема:
Сервер хранит данные в кодировке ср1.
Для того, чтобы он мог работать с разными клиентами в разных кодировках, он может получить команду set names cp2.
Тогда он будет сам перекодировать и отдавать даные клиенту в кодировке ср2. Но если клиент говорит, что будет работать в кодировке ср2, а на самом деле работает в кодировке ср3, то на сервер попадут даные в кривоперекодированом виде. При этом работа даного клиента и сервера будет казаться, что проходит правильно, то есть даные будут читаться правильно. При этом другой клиент уже будет получать кривоперекодированые данные и получит мусор.

Чтобы определить, где затык, нужно с сервером работать в заведомо известной кодировке. То есть, если точно известно, что клиент будет рабоатть в кодировке ср4, то и указывать set names cp4;

Возможно у тебя Пма говорит, что работает в кои8, а броузер при этом забивает даные в вин1251. Тогдп ПМА будет данные показывать верно, но все другие клиенты покажут бред.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: кодировка в MySQL

Сообщение racotr » 12.01.2010 10:50:16

Попробуй отправить запрос
Код: Выделить всё
Код: Выделить всё
    set names utf8



Представляете, работает. Я в шоке. расскажите что вообще деллает это set names utf8
racotr
новенький
 
Сообщения: 14
Зарегистрирован: 19.12.2009 00:32:56
Откуда: Braneapol

Re: кодировка в MySQL

Сообщение AbakAngelSoft » 12.01.2010 11:34:41

set names устанавливает несколько переменных внутри MySql которые отвечают за кодировки при соединении с сервером для корректной перекодировке на лету.
например на диске все в cp1251 сервер обрабатывает в koi8 отправляет в utf8 а клиент получает опять в cp1251. :)
Все эти переменные можно установить по отдельности, что не очень разумно - как в приведенной схеме.
set names устанавливает все вместе в одну кодировку, кроме той что хранится на диске - она естественно не меняется.
Аватара пользователя
AbakAngelSoft
постоялец
 
Сообщения: 273
Зарегистрирован: 06.08.2008 19:28:26
Откуда: Краснодар

Пред.

Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 68

Рейтинг@Mail.ru