Перекодировать из CP1251 в кра

grin

Guest
Перекодировать из CP1251 в кра

Добрый день.

есть такая функция
PHP:
<?php
// by SiMM
function Unicode2Charset($str, $charset = 'Windows-1251') {
  return preg_replace('~&#(\d+);~se', 'iconv("UTF-16LE", $charset, pack("v", $1))', $str);
}

# Пример использования
echo Unicode2Charset('&#1082;&#1088;&#1072;&#1089;&#1085;&#1099;&#1081;');
?>
как ее можно применить для обратного преобразования?
 

grin

Guest
задают часто вопрос о преобразовании
PHP:
&#1082;&#1088;&#1072;&#1089;&#1085;&#1099;&#1081;
в cp1251 :(

или я совсем плохо ищу

-~{}~ 25.08.05 18:54:

>А зачем?
для wap сайта, некоторые телефоны не понимают utf-8, им нужен именно такой вот странный unicode, посмотреть например можно тут http://wap.mts.ru/index2.wml правда там еще символ "x". но он и не нужен.
 

Ghecko

Новичок
PHP:
function Charset2Unicode($str, $charset='Windows-1251')
{
/* вернет массив в Unicode а привести их к соотв виду не сложно*/ 
	return unpack("v*",iconv($charset,  "UTF-16LE", $str));
}
 

SiMM

Новичок
PHP:
function Charset2Entity($str,$charset='CP1251'){ // by SiMM
  return preg_replace('#[\x80-\xFF]#se',
                      "'&#'.join('',unpack('v',iconv('$charset','UTF-16LE','$0'))).';'",
                      $str);
}
 

grin

Guest
магическая строка, респект огромный.
SiMM, огромное спасибо, да и вообще, всем thx :)
 

SiMM

Новичок
Offtopic: может кто-нибудь скажет мне, как всё же правильно называется код вида &amp;#код; ? На Unicode он вроде не катит, на HTML entity - вроде тоже?
 

Ghecko

Новичок
Автор оригинала: SiMM
PHP:
function Charset2Entity($str,$charset='CP1251'){ // by SiMM
  return preg_replace('#[\x80-\xFF]#se',
                      "'&#'.join('',unpack('v',iconv('$charset','UTF-16LE','$0'))).';'",
                      $str);
}
Как я и говорил :) Только у меня почему-то unpack('v',...) не стало работать, только unpack('v*',...) :-\
 

kvf77

Red Devil
Добавлено в FAQ.
Очень много полезного по кодировкам в новом разделе FAQ:
http://phpclub.ru/faq/wakka.php?wakka=encodings&v=x3z
 
Сверху