Dusk
Команда клуба
Offline
Пол:
Редкий, но веселый вид
|
|
« : 27-01-2009 11:11 » |
|
Не могу найти, где настраивается кодировка символов в поле запроса в MySQL Query Browser под Виндой. MySQL Query Browser версии 1.2.12. База имеет кодировку UTF8, при написании запроса с русскими символами, последние отображаются квадратами.
|
|
« Последнее редактирование: 27-01-2009 11:14 от Dusk »
|
Записан
|
Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших Опыт - это то, что появляется сразу после того, как он был так необходим... Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
|
|
|
Dimka
Деятель
Команда клуба
Offline
Пол:
|
|
« Ответ #1 : 27-01-2009 12:09 » |
|
Dusk, а это проблема кодировки или проблема используемого шрифта?
|
|
|
Записан
|
Программировать - значит понимать (К. Нюгард) Невывернутое лучше, чем вправленное (М. Аврелий) Многие готовы скорее умереть, чем подумать (Б. Рассел)
|
|
|
RXL
|
|
« Ответ #2 : 27-01-2009 12:59 » |
|
Dusk, выполни в начале сессии: SET NAMES cp1251;
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dusk
Команда клуба
Offline
Пол:
Редкий, но веселый вид
|
|
« Ответ #3 : 27-01-2009 13:04 » |
|
Скорее всего проблема кодировки. Результат запроса отображается корректно - он выдается в кодировке UTF8, но если в самом запросе есть русские буквы, который пишется в win-кодировке, то они отображаются квадратами. Опять же описание таблиц, полей отображаются корректно. Я посмотрел поддерживаемые в запросах кодировки: ANSI, UTF8, UTF16, т.е. получается win кодировка не поддерживается вообще. Искал в инете какой либо модуль, который позволял подключить поддержку win кодировки - не нашел...
RXL - не помогло...
|
|
|
Записан
|
Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших Опыт - это то, что появляется сразу после того, как он был так необходим... Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
|
|
|
RXL
|
|
« Ответ #4 : 27-01-2009 18:16 » |
|
Создай сессию и выведи результат запроса: SHOW VARIABLES LIKE 'character_set_%';Например: mysql> SHOW VARIABLES LIKE 'character_set_%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | utf8 | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
mysql> SET NAMES cp1251; Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'character_set_%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | cp1251 | | character_set_connection | cp1251 | | character_set_database | utf8 | | character_set_filesystem | utf8 | | character_set_results | cp1251 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
В тесте сервер 5.0.45. Важно сохранять регистр в имени кодировки - MySQL чувствителен к этому. Проверим эффект от этих действий: mysql> SET NAMES utf8; Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE tab (a VARCHAR(255)); Query OK, 0 rows affected (0.12 sec)
mysql> INSERT INTO tab VALUES ('Йцукенг'); Query OK, 1 row affected (0.00 sec)
mysql> SELECT * FROM tab; +----------------+ | a | +----------------+ | Йцукенг | +----------------+ 1 row in set (0.00 sec)
mysql> SET NAMES cp1251; Query OK, 0 rows affected (0.00 sec)
mysql> SELECT * FROM tab; +---------+ | a | +---------+ | ▒▒▒▒▒▒▒ | +---------+ 1 row in set (0.00 sec)
Мусор в последнем запросе связан с интерпретацией текста терминалом PuTTY - от был в режиме кодировки UTF-8. Если установить его в 1251, то последний SELECT дает "Йцукенг". Еще один тест: надо посмотреть дефолтные кодировки для базы и таблицы. Это влияет на кодировку хранения. mysql> SHOW CREATE DATABASE test; +----------+---------------------------------------------------------------+ | Database | Create Database | +----------+---------------------------------------------------------------+ | test | CREATE DATABASE `test` /*!40100 DEFAULT CHARACTER SET utf8 */ | +----------+---------------------------------------------------------------+ 1 row in set (0.00 sec)
mysql> SHOW CREATE TABLE tab; +-------+-------------------------------------------------------------------------------------------+ | Table | Create Table | +-------+-------------------------------------------------------------------------------------------+ | tab | CREATE TABLE `tab` ( `a` varchar(255) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 | +-------+-------------------------------------------------------------------------------------------+ 1 row in set (0.00 sec)
|
|
« Последнее редактирование: 27-01-2009 18:21 от RXL »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dusk
Команда клуба
Offline
Пол:
Редкий, но веселый вид
|
|
« Ответ #5 : 28-01-2009 10:02 » |
|
RXL, под консолью проблем нет, шрифты отображаются нормально. Кодировка по умолчанию в таблицах utf8. Проблема именно в Query Browser (ну не привык я работать в консоли ). Проблема только в том, что отображение символов косячит только в поле запроса и скрипта, в остальных местах отображение нормальное. Кстати сейчас создал тестовую схему в ней тестовую таблицу с кодировкой ср1251 - пофиг, не работает... Народ, неужели никто не встречался с такой проблемой, или все работают с мускулом под линухом?... Перерыл кучу инфы в инете - нет описания самой проблемы, не говоря уже о ее решении...
|
|
|
Записан
|
Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших Опыт - это то, что появляется сразу после того, как он был так необходим... Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
|
|
|
RXL
|
|
« Ответ #6 : 28-01-2009 10:30 » |
|
Dusk, а может у этой проги с кодировками и шрифтами не все в порядке в этом модуле?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dusk
Команда клуба
Offline
Пол:
Редкий, но веселый вид
|
|
« Ответ #7 : 28-01-2009 10:52 » |
|
RXL, это вообще-то стандартная прога для работы с мускулом компании MySQL AB, специально написана под винду. В том то и косяк, что в официальноу поставке она не поддерживает кодировку ср1251, вот я спрашиваю, может кто-то решил эту проблему...
|
|
|
Записан
|
Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших Опыт - это то, что появляется сразу после того, как он был так необходим... Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
|
|
|
RXL
|
|
« Ответ #8 : 28-01-2009 16:50 » |
|
Скачал и поставил себе. СУБД запущена локально под виндой. В Query Browser: 'character_set_client', 'utf8' 'character_set_connection', 'utf8' 'character_set_database', 'utf8' 'character_set_filesystem', 'binary' 'character_set_results', 'utf8' 'character_set_server', 'utf8' 'character_set_system', 'utf8'
Видимо в настройках MySQL стоит дефолтная кодировка utf8. Далее, в Query Browser: INSERT INTO t1 VALUES ('Йцуке');
SELECT * FROM t1;
'Йцуке'
set names cp1251;
INSERT INTO t1 VALUES ('Йцуке');
set names utf8;
SELECT * FROM t1;
'Йцукен' 'Йцуке'
Когда я объявил cp1251 и пытался вставить 6 кириллических букв в поле VARCHAR(10) мне было объявлено о том, что размер поля меньше размера данных. По этому в примере я вставляю только пять букв. Т.е. кодировку клиента легко менять, но сам Query Browser внутренне работает только с UTF-8... Вопрос такой: зачем тебе cp1251 в этой программе?
|
|
« Последнее редактирование: 28-01-2009 16:54 от RXL »
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
Dusk
Команда клуба
Offline
Пол:
Редкий, но веселый вид
|
|
« Ответ #9 : 30-01-2009 10:41 » |
|
RXL, винда не понимает utf8, мне все равно в какой кодировке работать... Мне надо делать запросы к базе, где в WHERE есть ограничение по текстовому полю, запускать скрипт вставки... Соответственно везде присутствует кирилица... Пытаюсь разбираться с PHP My Admin... Я просто никогда не работал с мускулом, а сейчас нужда заставила... И MSSQL, и в Oracle проблемм не было... Неужели нельзя было сделать простую перекодировку кирилических символов с ср1251 в кодировку базы?
|
|
|
Записан
|
Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших Опыт - это то, что появляется сразу после того, как он был так необходим... Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
|
|
|
RXL
|
|
« Ответ #10 : 31-01-2009 12:10 » |
|
Dusk, с базой проблем нет - трабла в Query Browser.
Ничего не понимаю: что тебе надо... 1. БД пофиг какого формата 2. Клиент Query Browser работает с utf8 3. Query Browser перед выводом в GUI конвертит utf8 в местную кодировку. 4. Копируя в буфер из GUI тебе незачем заботиться о кодировке.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
lag
Участник
Offline
|
|
« Ответ #11 : 12-02-2009 18:49 » |
|
Проблема в сервере Добавь в my.ini
[client] port=3306 default-character-set=cp1251 character-sets-dir=C:\Program Files\MySQL\MySQL Server 5.0/share/charsets/
[mysql] default-character-set=cp1251 character-sets-dir=C:\Program Files\MySQL\MySQL Server 5.0/share/charsets/
[mysqld] port=3306 default-character-set=cp1251 character-sets-dir=C:\Program Files\MySQL\MySQL Server 5.0/share/charsets/ skip-character-set-client-handshake
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #12 : 13-02-2009 16:06 » |
|
lag, и что это? Зачем базу переводить на 1251?
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
lag
Участник
Offline
|
|
« Ответ #13 : 14-02-2009 14:08 » |
|
При этих настройках сама база не переводится на 1251, а вот отображение и в Browser-е и у клиентом нормальное. По крайней мере я делаю так.
|
|
|
Записан
|
|
|
|
RXL
|
|
« Ответ #14 : 14-02-2009 15:10 » |
|
Дефолтную кодировку для клиента задает секция client, но ни mysql, ни mysqld тут не при чем.
Вообще, GUI-инструментарий community edition у них чисто номинальный и малополезный. Где-то в природе существует TOAD for MySQL (я пользуюсь TOAD for Oracle и сужу по его сервису и удобству) - должно быть стоящий продукт, но не бесплатный. По деньгам и нервозатратам проще писать в простом текстовом редакторе и запускать через консоль.
|
|
|
Записан
|
... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
|
|
|
freeit
Гость
|
|
« Ответ #15 : 14-02-2009 19:52 » |
|
Не могу найти, где настраивается кодировка символов в поле запроса в MySQL Query Browser под Виндой. MySQL Query Browser версии 1.2.12. База имеет кодировку UTF8, при написании запроса с русскими символами, последние отображаются квадратами.
Проблема со шрифтом, просто в настройках Code Font смени..
|
|
|
Записан
|
|
|
|
Dusk
Команда клуба
Offline
Пол:
Редкий, но веселый вид
|
|
« Ответ #16 : 02-03-2009 14:28 » |
|
freeit, спасибо... Что-то я совсем ступил - лез в файлы настройки и в реестр, а решение было на поверхности...
|
|
|
Записан
|
Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших Опыт - это то, что появляется сразу после того, как он был так необходим... Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
|
|
|
|