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

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

ru
Offline Offline
Пол: Мужской
Редкий, но веселый вид


« : 27-01-2009 11:11 » 

Не могу найти, где настраивается кодировка символов в поле запроса в MySQL Query Browser под Виндой.
MySQL Query Browser версии 1.2.12.
База имеет кодировку UTF8, при написании запроса с русскими символами, последние отображаются квадратами.
« Последнее редактирование: 27-01-2009 11:14 от Dusk » Записан

Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших
Опыт - это то, что появляется сразу после того, как он был так необходим...
Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
Dimka
Деятель
Команда клуба

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

« Ответ #1 : 27-01-2009 12:09 » 

Dusk, а это проблема кодировки или проблема используемого шрифта?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
RXL
Технический
Администратор

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

WWW
« Ответ #2 : 27-01-2009 12:59 » 

Dusk, выполни в начале сессии: SET NAMES cp1251;
Записан

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

ru
Offline Offline
Пол: Мужской
Редкий, но веселый вид


« Ответ #3 : 27-01-2009 13:04 » 

Скорее всего проблема кодировки. Результат запроса отображается корректно - он выдается в кодировке UTF8, но если в самом запросе есть русские буквы, который пишется в win-кодировке, то они отображаются квадратами. Опять же описание таблиц, полей отображаются корректно. Я посмотрел поддерживаемые в запросах кодировки: ANSI, UTF8, UTF16, т.е. получается win кодировка не поддерживается вообще. Искал в инете какой либо модуль, который позволял подключить поддержку win кодировки - не нашел...

RXL - не помогло...
Записан

Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших
Опыт - это то, что появляется сразу после того, как он был так необходим...
Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
RXL
Технический
Администратор

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

WWW
« Ответ #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
Команда клуба

ru
Offline Offline
Пол: Мужской
Редкий, но веселый вид


« Ответ #5 : 28-01-2009 10:02 » 

RXL, под консолью проблем нет, шрифты отображаются нормально. Кодировка по умолчанию в таблицах utf8. Проблема именно в Query Browser (ну не привык я работать в консоли Улыбаюсь). Проблема только в том, что отображение символов косячит только в поле запроса и скрипта, в остальных местах отображение нормальное. Кстати сейчас создал тестовую схему в ней тестовую таблицу с кодировкой ср1251 - пофиг, не работает...

Народ, неужели никто не встречался с такой проблемой, или все работают с мускулом под линухом?... Перерыл кучу инфы в инете - нет описания самой проблемы, не говоря уже о ее решении... Жаль
Записан

Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших
Опыт - это то, что появляется сразу после того, как он был так необходим...
Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
RXL
Технический
Администратор

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

WWW
« Ответ #6 : 28-01-2009 10:30 » 

Dusk, а может у этой проги с кодировками и шрифтами не все в порядке в этом модуле?
Записан

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

ru
Offline Offline
Пол: Мужской
Редкий, но веселый вид


« Ответ #7 : 28-01-2009 10:52 » 

RXL, это вообще-то стандартная прога для работы с мускулом компании MySQL AB, специально написана под винду. В том то и косяк, что в официальноу поставке она не поддерживает кодировку ср1251, вот я спрашиваю, может кто-то решил эту проблему...
Записан

Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших
Опыт - это то, что появляется сразу после того, как он был так необходим...
Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
RXL
Технический
Администратор

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

WWW
« Ответ #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
Команда клуба

ru
Offline Offline
Пол: Мужской
Редкий, но веселый вид


« Ответ #9 : 30-01-2009 10:41 » 

RXL, винда не понимает utf8, мне все равно в какой кодировке работать... Мне надо делать запросы к базе, где в WHERE есть ограничение по текстовому полю, запускать скрипт вставки... Соответственно везде присутствует кирилица... Пытаюсь разбираться с PHP My Admin...
Я просто никогда не работал с мускулом, а сейчас нужда заставила... И MSSQL, и в Oracle проблемм не было... Неужели нельзя было сделать простую перекодировку кирилических символов с ср1251 в кодировку базы?
Записан

Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших
Опыт - это то, что появляется сразу после того, как он был так необходим...
Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
RXL
Технический
Администратор

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

WWW
« Ответ #10 : 31-01-2009 12:10 » 

Dusk, с базой проблем нет - трабла в Query Browser.

Ничего не понимаю: что тебе надо...
1. БД пофиг какого формата
2. Клиент Query Browser работает с utf8
3. Query Browser перед выводом в GUI конвертит utf8 в местную кодировку.
4. Копируя в буфер из GUI тебе незачем заботиться о кодировке.
Записан

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

ru
Offline 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
Технический
Администратор

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

WWW
« Ответ #12 : 13-02-2009 16:06 » 

lag, и что это? Зачем базу переводить на 1251?
Записан

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

ru
Offline Offline

« Ответ #13 : 14-02-2009 14:08 » new

При этих настройках сама база не переводится на 1251, а вот отображение и в Browser-е и у клиентом нормальное. По крайней мере я делаю так.
Записан
RXL
Технический
Администратор

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

WWW
« Ответ #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
Команда клуба

ru
Offline Offline
Пол: Мужской
Редкий, но веселый вид


« Ответ #16 : 02-03-2009 14:28 » 

freeit, спасибо... Что-то я совсем ступил - лез в файлы настройки и в реестр, а решение было на поверхности...
Записан

Человек, сделавший хотя бы шаг к цели, сразу становится мишенью для всех отставших
Опыт - это то, что появляется сразу после того, как он был так необходим...
Бывают минуты, когда у тебя есть секунды, чтобы исправить деланное часами и не получить последствия на годы...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines