запись текста в UTF-16 Little Endian

NaN

Новичок
запись текста в UTF-16 Little Endian

есть ( русский и немецкий ) текст в кодировке UTF-8
я его записываю в UTF-16 Little Endian

таким образом:

PHP:
function get_2b( $value ){

  $buffer='';
  $count = strlen( $value );
  for ($i=0;$i<$count;$i++){
    $buffer.=substr( $value, $i,1 )."\x00";
  }
  return $buffer;

}

$nl="\r\x00\n\x00";

$buffer=chr(255).chr(254);
$buffer.=$nl;
$buffer.= get_2b( 'русский  текст' ); // RUS
$buffer.=$nl;
$buffer.= get_2b( '&#252;po &#228;&#246;l' );  // DEU

$fp = fopen ('utf16.txt', 'a');
      fwrite($fp, $buffer );
      fclose($fp);
проблема в том, что ( русский и немецкий ) текст отображается не корректно.
как побороть?

-~{}~ 28.01.08 12:37:

данные на форуме отобразились не корректно
вместо

PHP:
$buffer.= get_2b( '&#252;po &#228;&#246;l' );  // DEU
немецкие буквы
 

alexcrown

Новичок
Какой однако интересный метод конвертации utf-8 в utf-16 - добавление \x00 через байт. Лучше вам пользоваться функцией iconv или mb_convert_encoding, ну или разобраться с представлением строк в различных unicode-кодировках.
 

Pigmeich

Новичок
проблема в том, что ( русский и немецкий ) текст отображается не корректно.
как побороть?
Спорим, немецкие буквы с черточками тоже не все правильно выводяться?

Про мегаалгоритм "конвертации" уже написали.
 

NaN

Новичок
решение есть :

для русского языка

PHP:
$buffer = iconv( "UTF-8", "windows-1251" , $buffer );
$buffer = iconv( "", "UTF-16LE" , $buffer );
всё бы хорошо но у меня 20 языков и для каждого подставлять кодировку это Ж.
а так всем спасибо!

-~{}~ 28.01.08 14:25:

прошу прощение, так заработало для всех языков:
PHP:
$buffer = iconv( "UTF-8", "UTF-16LE" , $value );
 

Pigmeich

Новичок
Действительно молодец. Нашел хорошее решение без подсказок. Уважаю.
 
Сверху