Перекодировка UTF-8 в cp1251
26.02.2008
Под катом представлено несколько функций для PHP для перекодировки UTF-8 в cp1251
Для выполнения вышепоставленной задачи вы можете воспользоваться стандартной функцией PHP - iconv. Ее подробное описание можно найти на официальном сайте PHP.
Либо воспользоваться одной из функций для перекодировки кириллицы из UTF-8 в windows-1251, представленных ниже.
function utf8_to_cp1251($utf8) {
$windows1251 = "";
$chars = preg_split("//",$utf8);
for ($i=1; $i<count($chars)-1; $i++) {
$prefix = ord($chars[$i]);
$suffix = ord($chars[$i+1]);
if ($prefix==215) {
$windows1251 .= chr($suffix+80);
$i++;
} elseif ($prefix==214) {
$windows1251 .= chr($suffix+16);
$i++;
} else {
$windows1251 .= $chars[$i];
}
}
return $windows1251;
}
function Utf8Win($str,$type="w") {
static $conv='';
if (!is_array($conv)) {
$conv = array();
for($x=128;$x<=143;$x++) {
$conv['u'][]=chr(209).chr($x);
$conv['w'][]=chr($x+112);
}
for($x=144;$x<=191;$x++) {
$conv['u'][]=chr(208).chr($x);
$conv['w'][]=chr($x+48);
}
$conv['u'][]=chr(208).chr(129);
$conv['w'][]=chr(168);
$conv['u'][]=chr(209).chr(145);
$conv['w'][]=chr(184);
$conv['u'][]=chr(208).chr(135);
$conv['w'][]=chr(175);
$conv['u'][]=chr(209).chr(151);
$conv['w'][]=chr(191);
$conv['u'][]=chr(208).chr(134);
$conv['w'][]=chr(178);
$conv['u'][]=chr(209).chr(150);
$conv['w'][]=chr(179);
$conv['u'][]=chr(210).chr(144);
$conv['w'][]=chr(165);
$conv['u'][]=chr(210).chr(145);
$conv['w'][]=chr(180);
$conv['u'][]=chr(208).chr(132);
$conv['w'][]=chr(170);
$conv['u'][]=chr(209).chr(148);
$conv['w'][]=chr(186);
$conv['u'][]=chr(226).chr(132).chr(150);
$conv['w'][]=chr(185);
}
if ($type == 'w') {
return str_replace($conv['u'],$conv['w'],$str);
} elseif ($type == 'u') {
return str_replace($conv['w'], $conv['u'],$str);
} else {
return $str;
}
}
Tags: cp1251, PHP, UTF-8, кодировка
29.02.2008 в 01:22
Нє ну воно зрозуміло, але я не розумію нафіг його використовувати, можливо треба навпаки, з 1251 у утф8?
[Ответить]
29.02.2008 в 10:05
Если весь интерфейс на cp1251, а нужно импортировать и вывести некоторую информацию, которая изначально в UTF-8 ... Вот как раз может и пригодиться.
Твое пожелание обязательно учту.
[Ответить]
03.03.2008 в 07:52
Доречі мені здавалося що у пхп є встроєна бібліотека для перекодування текстів, чи не так. Не простіше використать iconv ?
[Ответить]
03.03.2008 в 11:28
Читаем: описание iconv на оф. сайте php.net:
"...Этот модуль является частью PHP начиная с версии 5 ..."
Значит, в версиях ниже 5й iconv устанавливается как расширение. Мы не всегда можем получить доступ к настройкам php...
Хотя на данный момент у большинства хостеров установлен PHP версии 5.х
[Ответить]
14.04.2008 в 17:52
iconv Работает начиная с PHP версии 4.0.5:
Convert string to requested character encoding (PHP 4 >= 4.0.5, PHP 5)
[Ответить]
14.04.2008 в 17:53
(Я имею в виду функцию iconv, а не модуль)
[Ответить]
08.08.2008 в 08:18
Спасибо за код! Очень помог!!
[Ответить]
29.07.2009 в 11:19
Спасибо!!!, Спасибо!!!, Спасибо!!!!!!! Очень помогло
[Ответить]
03.01.2010 в 23:41
Присоединяюсь! Спасибо, очень помогло!!!
[Ответить]
24.01.2010 в 07:53
Не правильно работает буквы "я" и "ч" не перекодируются
[Ответить]
Mihalytch Reply:
Февраль 16th, 2010 at 12:48
Спасибо. Проверю и выложу обновления в ближайшем будущем.
[Ответить]
18.07.2010 в 13:45
Спасибо! очень помог Ваш скрипт! долго копался в нете, нашёл его по запросу "привет" )))
[Ответить]