кодировка в MySQL
Модератор: Модераторы
- alu
- новенький
- Сообщения: 33
- Зарегистрирован: 15.01.2007 11:54:14
- Откуда: Саратов
- Контактная информация:
кодировка в MySQL
Люди подскажите, устал уже гадать какая кодирвка нужна чтоб русские буквы были русскими, а не знаками вопроса..
сервер MySQL на Linux с локалью cp1251, кодировка базы данных-utf8. Пишу приложение для Виндов...
из консоли линукса делаю выборку, и если перед этим я напишу
SET character_set_client="cp1251",character_set_connection="cp1251",character_set_results="cp1251";
то все буквы русские в консоли нормально отображаются, если это же делаю в приложении то не видно ничего (вопросы одни с цифрами).
сервер версии 4.1 вывожу в TDBGrid,
пробовал
SET character_set_client="utf8",character_set_connection="utf8",character_set_results="utf8";
и
SET character_set_client="koi8r",character_set_connection="koi8r",character_set_results="koi8r";
поле CharSet в ТMySQL41Connection ни как не влияет на отображение почему-то
сервер MySQL на Linux с локалью cp1251, кодировка базы данных-utf8. Пишу приложение для Виндов...
из консоли линукса делаю выборку, и если перед этим я напишу
SET character_set_client="cp1251",character_set_connection="cp1251",character_set_results="cp1251";
то все буквы русские в консоли нормально отображаются, если это же делаю в приложении то не видно ничего (вопросы одни с цифрами).
сервер версии 4.1 вывожу в TDBGrid,
пробовал
SET character_set_client="utf8",character_set_connection="utf8",character_set_results="utf8";
и
SET character_set_client="koi8r",character_set_connection="koi8r",character_set_results="koi8r";
поле CharSet в ТMySQL41Connection ни как не влияет на отображение почему-то
Ситуация имхо аналогичная, только известно, что прога (Linux) в koi8-r база mysql в cp1251
Всё замечательно подключается, данные видятся, перекодировка требуется.
Как бы Tmysql50connection -у сказать что у нево чарсет был бы cp1251.. или наоборот...
Всяческие SET NAMES не помогають..
2alu: получилось чонть?
Всё замечательно подключается, данные видятся, перекодировка требуется.
Как бы Tmysql50connection -у сказать что у нево чарсет был бы cp1251.. или наоборот...
Всяческие SET NAMES не помогають..
2alu: получилось чонть?
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
shade писал(а):см. http://4matic.wordpress.com/2006/11/11/ ... s-v-mysql/
это я уже курил +)
Проблема в том, что у меня есть клиенты на винде, поэтому база сделана с кодировкой cp1251, а вот как с такой кодировкой в базе работать из написанного приложения на эхотаге, где основная кодировка koi8r?
т.е. я во всяком случае не заинтересован конвертировать данные..
Из данной проблемы есть как я вижу два выхода:
1 - научить иксы дефолтовой локали cp1251
2 - каким то образом добиться чтобы параметр Tmysql50connection.charset каким то образом все таки начал работать.
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Lisolog писал(а):1 - научить иксы дефолтовой локали cp1251
В отдельно взятом случае (если только для себя), то в принципе можно...
Lisolog писал(а):Всяческие SET NAMES не помогають..
Если ничего не путаю, то SET NAMES одноверменно уставливает character_set_client, character_set_connection и character_set_results.
Попробуй устанавливать их отдельно
http://www.habrahabr.ru/blog/mysql/17731.html писал(а):Любой mysql-клиент при соединении с сервером может установить несколько переменных:
* character_set_client - указывает, в какой кодировке будут поступать данные от клиента;
* character_set_connection - указывает, в какую кодировку следует преобразовать данные полученые от клиента перед выполнением запроса;
* collation_connection - указывает, каким образом сравнивать между собой строки в запросах;
* character_set_results - указывает серверу не необходимость перекодировать результаты запроса в определенную кодировку перед выдачей их клиенту.
Например, попробуйте в линухе сделать так
SET character_set_client="koi8r", character_set_connection="cp1251", character_set_results="koi8r";
А в винде SET NAMES cp1251
shade писал(а):Lisolog писал(а):1 - научить иксы дефолтовой локали cp1251
В отдельно взятом случае (если только для себя), то в принципе можно...
Считаю это надругательством над Линухом, впендюривать виндовую локаль, хотя желание было +)
Например, попробуйте в линухе сделать так
SET character_set_client="koi8r", character_set_connection="cp1251", character_set_results="koi8r";
А в винде SET NAMES cp1251
Пасиба, попробую воткнуть.
Один вопрос:
это делается один раз при запуске или перед каждым запросом?
ну или там в начале сеанса с сервером, до тех пор пока таймаут не выйдет...
Просто когда я некоторое время назад пытался запускать какойто аналогичный запрос (когда на винде в дельфях подключался к серваку с кодировкой Latin1) то чтото жутко и грязно выругивалось..
Ну в общем завтра пробую и отписываюсь что получилось.
- shade
- энтузиаст
- Сообщения: 879
- Зарегистрирован: 21.02.2006 19:15:48
- Откуда: http://shamangrad.net/
- Контактная информация:
Lisolog писал(а):Один вопрос:
это делается один раз при запуске или перед каждым запросом?
ну или там в начале сеанса с сервером, до тех пор пока таймаут не выйдет...
Один раз после подключения. Но могут быть нюансы, если используется автоматическое переподключение при разрывае соедиения, в доках вроде было написано, что переменные в таком случае сбрасываются... По-умолчанию, как я понимаю, автоматическое переподключение не используется или это относиться только к утилите mysql... в общем точно не скажу
-
victorgugo
- новенький
- Сообщения: 17
- Зарегистрирован: 04.03.2009 02:11:20
кто знает? спасайте! подключенная БД к лазарусовскому приложению! русский текст отбражается знаками вопросов! при попытке написать в гриде что-то по русски возникает исключительная ситуация!
заранее спасибо!
заранее спасибо!
victorgugo писал(а):кто знает? спасайте! подключенная БД к лазарусовскому приложению! русский текст отбражается знаками вопросов! при попытке написать в гриде что-то по русски возникает исключительная ситуация!
заранее спасибо!
В какой кодировке база и в какой кодировке проект?
если проект в UTF-8 а база в 1251 например делай так:
Код: Выделить всё
....sql.add('SET character_set_client="utf8", character_set_connection="cp1251",character_set_results="utf8";');Если иначе - смотри по аналогии
-
victorgugo
- новенький
- Сообщения: 17
- Зарегистрирован: 04.03.2009 02:11:20
Lisolog писал(а):В какой кодировке база и в какой кодировке проект?если проект в UTF-8 а база в 1251 например делай так:Код: Выделить всё....sql.add('SET character_set_client="utf8", character_set_connection="cp1251",character_set_results="utf8";');
Да! проект в UTF, а база в 1251! sql.add - это метод для Query?
victorgugo писал(а):Lisolog писал(а):В какой кодировке база и в какой кодировке проект?если проект в UTF-8 а база в 1251 например делай так:Код: Выделить всё....sql.add('SET character_set_client="utf8", character_set_connection="cp1251",character_set_results="utf8";');
Да! проект в UTF, а база в 1251! sql.add - это метод для Query?
угу
-
victorgugo
- новенький
- Сообщения: 17
- Зарегистрирован: 04.03.2009 02:11:20
Спасибо громадное! все получилось!
Помогите тоже разобраться с кодировками.
Сделал небольшой проект в Lazarus под Windows для MySQL 5.0, но с чтением русских букв проблемы.
База данных вроде в latin1 - по крайней мере при её создании я ничего не менял, всё по дефолту.
В проекте имеется такая строчка (взята из какого то примера):
Значения кодировок пробовал тосовать по разному, но ничего путнего не получается, либо вместо русских букв знаки вопросов, либо абра-кадабра.
Сделал небольшой проект в Lazarus под Windows для MySQL 5.0, но с чтением русских букв проблемы.
База данных вроде в latin1 - по крайней мере при её создании я ничего не менял, всё по дефолту.
В проекте имеется такая строчка (взята из какого то примера):
Код: Выделить всё
SQLQuery1.sql.add('SET character_set_client='+#39+'utf8'+#39+', character_set_connection='+#39+'cp1251'+#39+',character_set_results='+#39+'utf8'+#39+';');Значения кодировок пробовал тосовать по разному, но ничего путнего не получается, либо вместо русских букв знаки вопросов, либо абра-кадабра.
- GAMER
- энтузиаст
- Сообщения: 627
- Зарегистрирован: 06.08.2008 13:41:07
- Откуда: Ужгород-Днепр, Украина
- Контактная информация:
Попробуй отправить запрос
Код: Выделить всё
set names utf8