Использование на сайте кодировок Win-1251 и UTF-8
Была (надеюсь) проблема, что у меня на сайте www.electroseller.ru сам магазин и форум в кодировке Windows-1251, а статьи на WordPress'е в UTF-8. Проблема была в том, что если (аномально чередуясь) магазин и форум показывались нормально, то ссылки в вордпрессе в квадратиках и наоборот.
Я в пхп начинающий, но побродив по просторам инета кое-что нашел и сделал так.
На те разделы сайта, где используется UTF-8 кодировка вставить
Цитата:
<?php
define('_SAPE_USER', 'ВСТАВИТЬ СВОЁ');
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
$o['charset'] = 'UTF-8';
$sape = new SAPE_client($o);
unset($o);
$se = $sape->return_links();
function detect_utf($Str) {
for ($i=0; $i<strlen($Str); $i++) {
if (ord($Str[$i]) < 0x80) $n=0; # 0bbbbbbb
elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb
elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb
elseif ((ord($Str[$i]) & 0xF0) == 0xF0) $n=3; # 1111bbbb
else return false; # Does not match any model
for ($j=0; $j<$n; $j++) { # n octets that match 10bbbbbb follow ?
if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80)) return false;
}
}
return true;
}
if (detect_utf($se)) {echo $se;}
else {echo mb_convert_encoding($se, "UTF-8", "CP1251");}
?>
|
на тех, где win-1251
Цитата:
<?php
define('_SAPE_USER', 'ВСТАВИТЬ СВОЁ');
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
$o['charset'] = 'windows-1251';
$sape = new SAPE_client($o);
unset($o);
$se = $sape->return_links();
function detect_utf($Str) {
for ($i=0; $i<strlen($Str); $i++) {
if (ord($Str[$i]) < 0x80) $n=0; # 0bbbbbbb
elseif ((ord($Str[$i]) & 0xE0) == 0xC0) $n=1; # 110bbbbb
elseif ((ord($Str[$i]) & 0xF0) == 0xE0) $n=2; # 1110bbbb
elseif ((ord($Str[$i]) & 0xF0) == 0xF0) $n=3; # 1111bbbb
else return false; # Does not match any model
for ($j=0; $j<$n; $j++) { # n octets that match 10bbbbbb follow ?
if ((++$i == strlen($Str)) || ((ord($Str[$i]) & 0xC0) != 0x80)) return false;
}
}
return true;
}
if (detect_utf($se)) {echo mb_convert_encoding($se, "CP1251", "UTF-8" );}
else {echo $se;}
?>
|
Вот, вроде как работает. Уважаемая администрация, не могли бы вы ответить, этот вариант можно смело использовать? А то чего-то не наблюдаю у себя links.db теперь :-)
|