Xpoint
   [напомнить пароль]

запись данных в UTF-16

Метки: [без меток]
2006-09-26 19:49:38 [обр] Lion[досье]
работаю в юникоде, столкнулся с такой штукой: при записи данных в файл
  open( F_OUT, ">$out_file" );
  binmode(F_OUT, ":encoding(UTF-16)");
  print F_OUT $text;
файл читается некорректно. А именно, в 16-ричном виде первые два байта переставленны местами: вместо FF FE (utf-16) записывается FE FF
Кто-нибудь знает, как с этим бороться?
Версия последняя - 5.9.4
спустя 44 минуты [обр] Владимир Палант(387/4445)[досье]
UTF-16LE?
спустя 18 часов [обр] Lion[досье]
Да, похоже на то. Только что с этим делать? Можно перекомпиллировать ядро, но не знаю, где искать ошибку :(
спустя 21 минуту [обр] Lynn «Кофеман»(3/571)[досье]

Владимир Палант[досье] предлагал вместо

binmode(F_OUT, ":encoding(UTF-16)");

написать

binmode(F_OUT, ":encoding(UTF-16LE)");

Если не поможет, попробуйте UTF-16BE


FYI
UTF-16 бывает в двух вариантах, Big Endian и Little Endian. Какой из них использовать если это не задано явно, зависит от очень многих факторов.

спустя 43 минуты [обр] Lion[досье]
при UTF-16BE/LE сохраняет, как двоичный текст с дополнительными пробелами между символами...
похоже, надо править какой-то модуль в ядре и перекомпиллировать
спустя 17 минут [обр] Владимир Палант(387/4445)[досье]
Не пробелы, а нулевые символы. Кажется вы на самом деле хотите UTF-8.
спустя 5 минут [обр] Lynn «Кофеман»(3/571)[досье]
Владимир Палант[досье]
У UTF-8 другая сигнатура (EF BB BF)
спустя 2 минуты [обр] Владимир Палант(387/4445)[досье]
Но в UTF-8 нет "пробелов" :)
Powered by POEM™ Engine Copyright © 2002-2005