Форум SAPE.RU

Форум SAPE.RU (http://forum.sape.ru/index.php)
-   Вопросы по работе системы (http://forum.sape.ru/forumdisplay.php?f=13)
-   -   Использование на сайте кодировок Win-1251 и UTF-8 (http://forum.sape.ru/showthread.php?t=4683)

Hichkok 22.09.2007 06:54

Использование на сайте кодировок 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 теперь :-)

Hichkok 22.09.2007 07:29

сорри, links.db есть


Часовой пояс GMT +3, время: 07:59.

Работает на vBulletin® версия 3.8.7.
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Перевод: zCarot
SAPE.RU — система купли-продажи ссылок с главных и внутренних страниц сайтов.