powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Кодировка 1251CYR в скриптах из командной строки
9 сообщений из 9, страница 1 из 1
Кодировка 1251CYR в скриптах из командной строки
    #34043714
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное баян, поэтому нижайше прошу не пинать ногами, а лаконично ткнуть носом в суть решения.

Проблема возникла при переходе от ASA 8 к ASA 9. Ранее скрипты, исполняемые из командной строки, "заливали" таблицы инициирующими данными на "нормальном Русском". И не было разницы,
запускаешь ли ты скрипт из командной строки, или из isql. Теперь isql грузит кириллицу нормально, а "командные" скрипты - криво.

Вот сокращенный пример .bat-файла, в котором скрипт install.sql, кроме создания структуры БД, грузит некие данные с кириллицей:

Код: plaintext
1.
2.
3.
4.
del /f /q DB_NAME.*
dbinit -p  8192  -z 1251CYR DB_NAME.db
dbisql start database 'DB_NAME' on create_database autostop OFF;
dbisql install.sql
dbstop create_database





http://]kurdl.h15.ru
...
Рейтинг: 0 / 0
Кодировка 1251CYR в скриптах из командной строки
    #34045329
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В ASA9 клиент может не совпадать по кодировке с базой. Если кодировка клиента не указана явно - драйвер клиента попытается взять ее из ОС. При несовпадении кодировки по умолчанию для ОС и для базы...

Перепиши запуск скрипта так:
dbisql -c "....; CHARSET=cp1251; ..." install.sql
Учти что явно указаная кодировка должна совпадать с той, которая использована в install.sql, а не в базе!

Подробнее открывай BOL и читай все что найдешь про параметры подключения CharSet и Lang.

---
http://www.rusug.ru] Портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
Кодировка 1251CYR в скриптах из командной строки
    #34045500
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlПерепиши запуск скрипта так:
dbisql -c "....; CHARSET=cp1251; ..." install.sql
Учти что явно указаная кодировка должна совпадать с той, которая использована в install.sql, а не в базе

Интересно, а как быть, если у меня такая старомодная форма подключения и исполнения скриптов? :)

Код: plaintext
1.
2.
3.
4.
5.
connect to credb user USER_NAME identified by USER_NAME;
read crebas.sql;
read grants.sql;
read triggers.sql;
.....
disconnect;

Я имею обыкновение почитывать BOL, однако мог чего-то и не заметить...
...
Рейтинг: 0 / 0
Кодировка 1251CYR в скриптах из командной строки
    #34045574
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльИнтересно, а как быть, если у меня такая старомодная форма подключения и исполнения скриптов? :)
Либо выносить строку подключения из скрипта в командную строку как я показывал.
Либо менять команду подключения на:
Код: plaintext
connect using "ENG=credb;UID=USER_NAME;PWD=USER_NAME;CHARSET=cp1251";
Либо вешаться :)
...
Рейтинг: 0 / 0
Кодировка 1251CYR в скриптах из командной строки
    #34048476
Курдль
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вешаться немного погодю. :)
Однако всеми предложенными способами добиться результата не удалось.
Вот строка .bat-файла, которая отработала, как надо (хотя пришлось отказаться от привычного стиля):

Код: plaintext
dbisql -c "uid=NAME;pwd=PASS" -codepage  1251  install.sql
...
Рейтинг: 0 / 0
Кодировка 1251CYR в скриптах из командной строки
    #34049635
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КурдльВешаться немного погодю. :)
Однако всеми предложенными способами добиться результата не удалось.
Вот строка .bat-файла, которая отработала, как надо (хотя пришлось отказаться от привычного стиля):

Код: plaintext
dbisql -c "uid=NAME;pwd=PASS" -codepage  1251  install.sql

Так а ведь все кажется просто, dbisql ты запускаешь ручками и у тебя берется win1251 из графического окружения, а *.bat ты запускаешь из командной строки, точнее из среды командного интерпретатора.
...
Рейтинг: 0 / 0
Кодировка 1251CYR в скриптах из командной строки
    #34051545
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Orlov Так а ведь все кажется просто, dbisql ты запускаешь ручками и у тебя берется win1251 из графического окружения,
По идее, оно должно браться, но не факт что действительно возьмется. В системе может стоять по умолчанию английский интерфейс или другая кодировка.
А вот запускаешь ты dbisql ручками или из *.bat разницы нету - батник наследует кодировку системы обычно :) И вообще, что значит "запускать dbisql ручками"?
...
Рейтинг: 0 / 0
Кодировка 1251CYR в скриптах из командной строки
    #34052889
Sergey Orlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl Sergey Orlov Так а ведь все кажется просто, dbisql ты запускаешь ручками и у тебя берется win1251 из графического окружения,
По идее, оно должно браться, но не факт что действительно возьмется. В системе может стоять по умолчанию английский интерфейс или другая кодировка.
А вот запускаешь ты dbisql ручками или из *.bat разницы нету - батник наследует кодировку системы обычно :) И вообще, что значит "запускать dbisql ручками"?
Ручками значит через ярлык или напрямую START - > Run или через Windows Explorer.
Я тут попробовал запустить cmd, а дальше copy con 1.txt, ну и стал набивать текст по-русски, отображение на экране как надо, затем F6, после чего открыл данный файлик, а в нем кодировка DOS, cp866.
Кстати, вроде можно обойтись только dbisql, а почему существуют и dbisqlg и dbisqlc?
...
Рейтинг: 0 / 0
Кодировка 1251CYR в скриптах из командной строки
    #34054586
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sergey Orlov Я тут попробовал запустить cmd, а дальше copy con 1.txt, ну и стал набивать текст по-русски, отображение на экране как надо, затем F6, после чего открыл данный файлик, а в нем кодировка DOS, cp866.Вот по этому и стоит использовать опцию командной строки -charset или опцию коннекта CHARSET :)

Sergey Orlov Кстати, вроде можно обойтись только dbisql, а почему существуют и dbisqlg и dbisqlc?
Ну во первых, dbisql - это копия dbisqlg.
dbisqlG - это Java версия, dbisqlC - С версия.
dbisqlG удобней, dbisqlC быстрее.... Какую хочешь, такую и используешь.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Кодировка 1251CYR в скриптах из командной строки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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