Старый 22.09.2007, 06:54   #1
Новичок
 
Регистрация: 20.09.2007
Сообщений: 13
Вес репутации: 0
Hichkok на пути к лучшему
По умолчанию Использование на сайте кодировок 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   #2
Новичок
 
Регистрация: 20.09.2007
Сообщений: 13
Вес репутации: 0
Hichkok на пути к лучшему
По умолчанию

сорри, links.db есть
Hichkok вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
На площадке кодировка UTF-8, а ссылки в windows-1251 screenname Установка кода на различные движки 34 16.04.2013 01:14
использование поддоменов zwolf Яндекс 11 25.04.2008 02:40
Использование ключевого слова при выборе площадки Sway Вопросы по работе системы 6 29.01.2008 01:51
Использование скрипта редиректа посетителей leszkin Вопросы по работе системы 8 22.07.2007 12:04
Сайт на win-1251, новости на utf-8. Какой размещать код? yokomal Ошибки при работе с системой 4 05.03.2007 18:44


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