Forum Webscript.Ru
Программирование => Perl => Тема начата: morpheyushka от 26 Января 2010, 16:49:32
-
Есть rh, на нем perl (5.8.8). Есть Win2000 Server. На нем MS SQL Server 2000. Подключаюсь к нему по связке FreeTDS + Sybase. Все отлично, за исключением кириллицы. Пытаюсь занести "Привет", а заносится что попало (кракозябрики). Помогите разобраться с кодировками - какая на серваке, какая в perl? Какими средствами можно узнать?
Вот что я нашел на SQL сервере:
Collaption name: Cyrillic_General_CI_AS
Вот содержимое locales.conf:
[default]
date format = %b %d %Y %I:%M%p
char set = KOI8-R
[en_US]
date format = %b %d %Y %I:%M%p
language = us_english
char set = KOI8-R
[es_ES]
date format = %b %d %Y %I:%M%p
language = spanish
char set = iso_1
[ru_RU]
date format = %b %d %Y %I:%M%p
language = russian
char set = KOI8-R
Спасибо за внимание,
Михаил.
-
А вот если пытаюсь прочитать русский текст из базы, то ловлю сообщение:
DBD::Sybase::st fetchrow_array failed: OpenClient message: LAYER = (0) ORIGIN = (0) SEVERITY = (9) NUMBER = (99)
Server oxygen, database WebTest
Message String: Some character(s) could not be converted into client\'s character set. Unconverted bytes were changed to question marks (\'?\')
Ну и выводит естественно в консоли знаками вопроса.
в freetds.conf пробовал добавить строчку:
client charset = KOI8-R
не помогло...уже 4 день бьюсь...уперся в эту ошибку и все
-
Пролил свет еще на одно событие...по скольку у меня в БД указано "Collaption name: Cyrillic_General_CI_AS", значит кодовая страница - 1251, то есть ср1251.
Но грабли еще не исправлены...по прежнему ничего не работает с кирилицей
-
Все...победа.
Перечитал еще раз мануалы на CPAN по DBD::Sybase и с помощью волшебных команд научил красную шапку и MS SQL Server 2000 общаться на одном языке:
BEGIN {
$ENV{SYBASE} = \'/usr/local\';
}
...
my $dbh = DBI->connect(\'dbi:Sybase:server=oxygen;charset=koi8-r\', $login, $pass);
Вопрос закрыт