Перекодировка UTF-8 в cp1251
Под катом представлено несколько функций для 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;
}
}
Нє ну воно зрозуміло, але я не розумію нафіг його використовувати, можливо треба навпаки, з 1251 у утф8?
Если весь интерфейс на cp1251, а нужно импортировать и вывести некоторую информацию, которая изначально в UTF-8 … Вот как раз может и пригодиться.
Твое пожелание обязательно учту.
Доречі мені здавалося що у пхп є встроєна бібліотека для перекодування текстів, чи не так. Не простіше використать iconv ?
Читаем: описание iconv на оф. сайте php.net:
“…Этот модуль является частью PHP начиная с версии 5 …”
Значит, в версиях ниже 5й iconv устанавливается как расширение. Мы не всегда можем получить доступ к настройкам php…
Хотя на данный момент у большинства хостеров установлен PHP версии 5.х
iconv Работает начиная с PHP версии 4.0.5:
Convert string to requested character encoding (PHP 4 >= 4.0.5, PHP 5)
(Я имею в виду функцию iconv, а не модуль)
Спасибо за код! Очень помог!!
Спасибо!!!, Спасибо!!!, Спасибо!!!!!!! Очень помогло
Присоединяюсь! Спасибо, очень помогло!!!
Не правильно работает буквы “я” и “ч” не перекодируются
Спасибо. Проверю и выложу обновления в ближайшем будущем.
Спасибо! очень помог Ваш скрипт! долго копался в нете, нашёл его по запросу “привет” )))
В начале статьи речь шла о стандартной функции, работает отлично и без проблем. Минимум ресурсов)
Использую ее давно, пока хватает:
$string_1251=iconv(“UTF-8″, “windows-1251″, $string_UTF);