Перевести строку из utf16be в ANSI

Где то там
Дата: 08.06.2009 21:37:02
Имеется строка в кодировке utf16be, но при этом выглядит так:
"С0т0р0о0к0а0"
то есть, запись разбита нулями, сама же строка в кодировке cp1251.
Каким образом такую строку привести к виду ANSI?
Зайцев Фёдор
Дата: 08.06.2009 22:20:21
"ноль" - это 0x30 ?
Где то там
Дата: 08.06.2009 23:03:36
Нет, именно #0.
misha mike
Дата: 09.06.2009 01:30:32
Где то там
Имеется строка в кодировке utf16be, но при этом выглядит так:
"С0т0р0о0к0а0"
то есть, запись разбита нулями, сама же строка в кодировке cp1251.
Каким образом такую строку привести к виду ANSI?

Странный какой-то utf16... Тут достаточно нули повыбрасывать, вот и все преобразование.
Где то там
Дата: 09.06.2009 03:10:37
Для пробы я так и сделал, но вдруг в следующий раз окажется "нормальный" utf16? Что тогда? Ведь максимальный номер для plain текста $7f, а тут все больше.
Anatoly Podgoretsky
Дата: 09.06.2009 16:48:45
Приведена строка ни к Юникоду, ни utf16be отношения не имеет

--
http://www.podgoretsky.com
Dmitry Arefiev
Дата: 09.06.2009 17:09:45
Anatoly Podgoretsky
Приведена строка ни к Юникоду, ни utf16be отношения не имеет

+1
Русские буквы в UTF16 занимают два байта, при чем оба не нулевые.
Это какая-то хрень ...
Где то там
Дата: 09.06.2009 17:36:56
Вот именно хрень, и я не знаю, что с ней теперь делать.
Dmitry Arefiev
Дата: 09.06.2009 17:42:19
Где то там
Вот именно хрень, и я не знаю, что с ней теперь делать.

А ... Ну тогда вопросы:

1) Что за источник этой хрени ?
2) Где и как эта хрень хранится - точное определение типа данных и код, при помощи
которого хрень попадает в переменную (или куда там) этого типа ?
3) Как ты смотришь на содержимое этой перменной (или кто она там) ?
4) Версия Delphi, если оно имеет ко всему происходящему отношение ?
Где то там
Дата: 09.06.2009 20:54:18
По порядку:

1) Что за источник этой хрени ?

Хрень всем известная, информационные таги ID3V2 в mp3.

2) Где и как эта хрень хранится - точное определение типа данных и код, при помощи
которого хрень попадает в переменную (или куда там) этого типа ?

$00 ISO-8859-1 [ISO-8859-1]. Terminated with $00.
$01 UTF-16 [UTF-16] encoded Unicode [UNICODE] with BOM. All
strings in the same frame SHALL have the same byteorder.
Terminated with $00 00.
$02 UTF-16BE [UTF-16] encoded Unicode [UNICODE] without BOM.
Terminated with $00 00.
$03 UTF-8 [UTF-8] encoded Unicode [UNICODE]. Terminated with $00.

Вот спецификация определения типа строки. Читаем чем бог на душу положит от банального BlockRead до StringList`а. Соответственно и читать можно в зависимости от дальнейшего кода разбора хоть в байтовый массив хоть в стринг.

3) Как ты смотришь на содержимое этой перменной (или кто она там) ?

Проверяю первый байт, если #0, то выводим как есть, иначе, в зависимости от способа кодирования, делаю соответствующие преобразования. И очень был удивлён, когда от нескольких mp3 получил в результате абракадабру.

4) Версия Delphi, если оно имеет ко всему происходящему отношение ?

Версия Delphi не имеет ни малейшего отношения. И как ни странно, WinAMP информацию от таких файлов отображает верно. Видно автор сталкивался с этой проблемой.