Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / mysql.exe: "set names utf8" не работает, а "--default-character-set=utf8" - да / 7 сообщений из 7, страница 1 из 1
26.01.2014, 11:37:00
    #38538084
jasu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mysql.exe: "set names utf8" не работает, а "--default-character-set=utf8" - да
Привет.

Столкнулся с такой вот странностью:

1) Создаю файл, допустим, c:/1.txt с содержимым
Код: sql
1.
select "xxxxxx";


(Вместо xxxxxx вставьте всякие разномастные юникодные символы, в посте это мне сделать не удалось, ибо страницы на форуме почему-то в windows-1251 выдаются).

2a) В конфигурационном файле прописываю
Код: sql
1.
2.
[mysql]
default-character-set=cp1251

(или любую другую кодировку, но не utf8)

2б) Пускаю mysql.exe, он коннектится к серверу, пишу
Код: sql
1.
set names utf8; \. c:/1.txt


..и вместо ожидаемой строчки юникодных символов получаю нечто в cp1251.

3а) Запускаю mysql.exe --default-character-set=utf8, он, опять же, коннектится к серверу, пишу
Код: sql
1.
\. c:/1.txt


и получаю ожидаемую строчку юникодных символов.

Это странно, учитывая, что, согласно документации, команда "set names utf8" и запуск mysql.exe с опцией --default-character-set=utf8 делают ровно одно и тоже: устанавливают значения сессионных переменных character_set_client, character_set_results и character_set_connection в utf8 (что видно посредством show variables like '%character%').

Может ли кто-нибудь объяснить, почему так происходит? Это баг, фича ОС или MySQL сервера (Win XP SP3, MySQL 5.6.13-log), или, может, я просто где-то торможу?
...
Рейтинг: 0 / 0
26.01.2014, 11:51:28
    #38538100
vkle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mysql.exe: "set names utf8" не работает, а "--default-character-set=utf8" - да
Не пробовал так делать, не объясню. Обычно пишу set names в файл, оттуда работает.
...
Рейтинг: 0 / 0
26.01.2014, 12:55:30
    #38538157
netwind
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mysql.exe: "set names utf8" не работает, а "--default-character-set=utf8" - да
jasu, случайно на хабре или другом подобном ресурсе не подсмотрели init-connect ? что в конфиге ?
в таких случаях может что угодно не работать.



авторибо страницы на форуме почему-то в windows-1251 выдаются
не почему-то, а потому что все нужные буквы в windows-1251 есть. Єто правда.
...
Рейтинг: 0 / 0
26.01.2014, 18:49:49
    #38538362
jasu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mysql.exe: "set names utf8" не работает, а "--default-character-set=utf8" - да
netwindjasu, случайно на хабре или другом подобном ресурсе не подсмотрели init-connect ? что в конфиге ?
в таких случаях может что угодно не работать.
Честно говоря, не понял, о каком init-connect`е на хабре идёт речь. Но у меня, на моём локальном сервере, init-connect пустой.
...
Рейтинг: 0 / 0
26.01.2014, 20:29:55
    #38538413
jasu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mysql.exe: "set names utf8" не работает, а "--default-character-set=utf8" - да
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
Cодержимое my.ini:

[mysql]
default-character-set=cp1251
skip-reconnect
user=root
port=3306
database=test

[mysqld]
port=3306
bind-address=127.0.0.1
character-set-server=cp1251
log-output=FILE
general-log=1
general_log_file="mysql56.log"
slow-query-log=1
slow_query_log_file="mysql56-slow.log"
long_query_time=10
log-bin="mysql56-bin"
log-error="mysql56.err"
innodb_data_file_path=ibdata1:12M:autoextend:max:50M
sql-mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
...
Рейтинг: 0 / 0
27.01.2014, 01:05:08
    #38538546
jasu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mysql.exe: "set names utf8" не работает, а "--default-character-set=utf8" - да
В общем, в ходе копания в мануале я наткнулся вот на такую строчку (файл sql-syntax.html, глава "13.2.6. LOAD DATA INFILE Syntax"):
авторSET NAMES and the setting of character_set_client do not affect interpretation of input. (подчёркивание моё). Если предположить, что mysql.exe`шная команда "source" (она же "\.") использует те же механизмы, если так можно выразиться, для загрузки данных из файлов, что и команда LOAD DATA INFILE, то, вопрос, наверное, можно считать решённым.
...
Рейтинг: 0 / 0
27.01.2014, 18:04:09
    #38539531
jasu
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
mysql.exe: "set names utf8" не работает, а "--default-character-set=utf8" - да
Нет, я был неправ постом выше. Проблема, похоже, в том, что в интерактивном режиме значение character_set_results игнорируется mysql`ем при отображении данных, полученных с сервера, если это значение было установлено после соединения с сервером. (вместо него использутся дефолтная кодировка). Может это только в Win XP, не уверен, возможности проверить нет.

vkle, netwind: спасибо за отклик.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / mysql.exe: "set names utf8" не работает, а "--default-character-set=utf8" - да / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]