UTF-16

e_moon

Новичок
Здравствуйте,
объясните мне что за фигня, в каком же виде UTF-16 хранит латинские символы алфавита??

PHP:
$str=iconv('cp1251','utf-8','test string');
print '<pre>';
preg_match('/string/',$str,$matches);
print 'search: ';
var_dump($matches);
Результат:
PHP:
search: array(1) {
  [0]=>
  string(6) "string"
}
а если:
PHP:
$str=iconv('cp1251','utf-16','test string');
print '<pre>';
preg_match('/string/',$str,$matches);
print 'search: ';
var_dump($matches);
то:
PHP:
search: array(0) {
}
 

С.

Продвинутый новичок
Хотя бы var_dump($str); не приходило в голову сделать для начала?
 

С.

Продвинутый новичок
Ну раз та же, то все должно быть ок.
 

e_moon

Новичок
в utf-16 добавляется '\0' после каждого символа.
отсюда
Ух ты... Спасибо.
Так получается ок:
PHP:
preg_match('/string/',str_replace("\00", Null, $str),$matches);
P.S. А вообще '\0' после каждого символа - это тема чисто UTF-16? Выходит, таким способом можно даже проверять, что строка в UTF-16, не привязываясь к BOM?
 
Сверху