Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: MySQL WIN\DOS char set  (Прочитано 9813 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mayor
Специалист

ru
Offline Offline

« : 02-06-2004 10:46 » 

У меня MySQL хранит руские буквы в таблице в Win кодировке, в принципе так и надо но mysql.exe их мне выводит на консоль в виде абракадабры, как и команда more из файла.

Как переписать запрос, чтобы их из win перенести в dos, или more заставить при выводе на консоль использовать win charset ?
Записан

1n c0de we trust
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 02-06-2004 19:25 » 

Эти сложности создает винда (их стоит назвать _идиотские_) - все на ее совести и решить это нельзя.
MySQL имеет возможности перекодировки, но единственная известная мне возможность, это перекодировать KOI8-R в CP1251. Все прочие перекодировки можно сделать только программно, и, конечно, в рамках утилиты mysql не реальны.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Mayor
Специалист

ru
Offline Offline

« Ответ #2 : 03-06-2004 03:49 » 

Читая RTFM я где-то видел функцию принимающую 3 параметра внутри запроса, первый текстовая строка, из которой берется каждая буква, которая ищется во второй строке и заменятеся буквой из третей строки с тем же смещением:

asdf abc def выдаст dsdf

Может есть аналог в MySQL?

И еще возникла проблемма MySQL в запросе на поиск принимает UNICODE строку, сменить ее кодировку нет возможности равно как и перезапустить сервак, внутри все лежит в ANSI и поэтому через where нечего не находится

Что делать ?
Записан

1n c0de we trust
Chaa
Помогающий

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 03-06-2004 06:16 » 

Если у тебя MySQL версии 4 или больше, то теоретически можно решить эту проблему. Для начала выясни, есть ли у тебя на сервере кодировка cp866 (русский дос).
SHOW CHARACTER SET;
Если нет, можно сделать, написав файл share/charsets/cp866.conf

Способ 1.
Использовать CONVERT http://dev.mysql.com/doc/mysql/en/Charset-CONVERT.html
Код:
SELECT CONVERT)field USING cp866: FROM table;

Способ 2.
Изменить charset клиента http://dev.mysql.com/doc/mysql/en/Charset-connection.html
Код:
SET character_set_client = cp866;
Записан
Mayor
Специалист

ru
Offline Offline

« Ответ #4 : 06-06-2004 02:28 » 

show character set не работает
show variables выдает:
сharacter_set latin1                                    сharacter_sets    latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620 ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257 latin5

Но в принципе, я додумался mysql из batch файла запускать из под ULtraEdit -прямо как во времена когда я знал один лишь ассемблер Улыбаюсь , так оно удобнее и с кодировками нет проблем. Другая проблемма с UNICODE, приходится для MySQL запускать еще один сервак, чтобы UNI в ansi для запроса перевести, как с этим вопросом попроще разобраться?

И что такое UTF-8?
Записан

1n c0de we trust
RXL
Технический
Администратор

Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 07-06-2004 11:55 » 

UTF-8 : http://www.faqs.org/rfcs/rfc3629.html
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Mayor
Специалист

ru
Offline Offline

« Ответ #6 : 27-06-2004 06:49 » new

RXL,  спасибо, как я понял 8 это это минимальное число битов в символе, теперь при желании можно будет самостоятельно конвертировать тексты Улыбаюсь к utf к unicode похоже не имеет никакого отношения?
 
 А вот с charset проблемма так и не разрешилась - мне вроде удавалось сменить charset таблицы по умолчанию, но это не принесло результата, пришлось использовать binary при сортировке, скорее всего есть два пути:
 скачать версию новее 4.0.12 в которой есть character set support
 или найти файл кодировок по которому производиться collation и изменить его вручную
 
 Что посоветуйте?
Записан

1n c0de we trust
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines