Форум SAPE.RU

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

Doc 10.01.2010 15:31

Скрипты с разной кодировкой на одном сайте
 
Скрипты с разной кодировкой на одном сайте. То есть есть статичные страницы с кодировкой кириллической, есть галерея с UTF-8. Решит ли такой способ, описаный в help-е

<?php
$o['multi_site'] = true; //Указывает скрипту наличие нескольких сайтов
$sape = new SAPE_client($o);
?>
чтобы для каждого раздела сайта был свой файл с ссылками в разных кодировках. Иначе получается конфликт и все ссылки отражаются кракозябрами.

Ank 10.01.2010 15:48

Цитата:

Сообщение от Doc (Сообщение 691146)
Решит ли такой способ

нет. Ищите рецепт на форуме. Хотя правильнее привести на сайте к единой кодировке все

Yappie 10.01.2010 15:50

По идее $o['charset'] (а не multi_site) надо смотреть и два разных кода выводить. В одной части, где кодировка 1251 эту директиву не указывать, в части с UTF - указывать...

Но учитывая что может и правда Сапа хранит ссылки прямо в указанной кодировке можно пойти и другим путем:

хранить, допустим, все ссылки в 1251 кодировке (обычный код Сапы, без $o), а на тех частях где UTF:

вместо
PHP код:

print $sape->return_links(); 

делать
PHP код:

print win2utf($sape->return_links()); 

функция win2utf ниже:

PHP код:

function win2utf($s) {
    for(
$i=0$m=strlen($s); $i<$m$i++) {
    
$c=ord($s[$i]);
    if (
$c==184) { $t.=chr(209).chr(145); continue; };
    if (
$c==168) { $t.=chr(208).chr(129);  continue; };
    if (
$c<=127) {$t.=chr($c); continue; }
    if (
$c>=192 && $c<=207) {$t.=chr(208).chr($c-48); continue; }
    if (
$c>=208 && $c<=239) {$t.=chr(208).chr($c-48); continue; }
    if (
$c>=240 && $c<=255) {$t.=chr(209).chr($c-112); continue; }
    }
    return 
$t;


Правда остается вопрос поймет ли робот Сапы две разные кодировки.. по идее должен.

Но вообще, Ank прав - лучше привести к единой кодировке весь сайт.

tim12 10.01.2010 16:06

вот так
PHP код:

$sape = new SAPE_client();
$s=iconv('UTF-8','CP1251',$sape->return_links());
echo 
$s


stepankin 10.01.2010 16:39

tim12,

насколько мне маразм не изменяет, все-таки не cp1251, а windows-1251. Т.е. iconv('utf-8', 'windows-1251', $param).

CP1251 используется в мускуле ("set names cp1251", например).

Taldyk 10.01.2010 17:35

Есть решение проще.
Делаем копию файла sape.php
называем его к примеру sape1.php
В sape1.php меняем строчку кодировки
var $_charset = 'windows-1251'; на нужную
и тут меняем название links.db
return dirname(__FILE__) . '/' . $this->_host . '.links1.db';
} else {
return dirname(__FILE__) . '/links1.db';

и на страницах с отличной кодировкой меняем строчку
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape1.php');

Всё прекрасно работает

ЗЫ. можете делать хоть 10 различных кодировок на одном сайте.

Wink 10.01.2010 17:40

Цитата:

Сообщение от stepankin (Сообщение 691218)
насколько мне маразм не изменяет, все-таки не cp1251, а windows-1251.

Изменяет. Будут работать оба варианта. Консольный iconv -l вам в помощь

Doc 10.01.2010 17:49

Цитата:

Сообщение от Taldyk (Сообщение 691286)
Есть решение проще.
Делаем копию файла sape.php
называем его к примеру sape1.php
В sape1.php меняем строчку кодировки
var $_charset = 'windows-1251'; на нужную
и тут меняем название links.db
return dirname(__FILE__) . '/' . $this->_host . '.links1.db';
} else {
return dirname(__FILE__) . '/links1.db';

и на страницах с отличной кодировкой меняем строчку
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape1.php');

Всё прекрасно работает

ЗЫ. можете делать хоть 10 различных кодировок на одном сайте.

Но как же будет осуществляться взаимодействие между биржей и sape.php, если этот файл будет переименован в sape1.php?

Taldyk 10.01.2010 17:54

Цитата:

Сообщение от Doc (Сообщение 691299)
Но как же будет осуществляться взаимодействие между биржей и sape.php, если этот файл будет переименован в sape1.php?

а название тут причём?
Вы вызываете скрипт со своей страницы. Как его зовут это роли не играет, надеюсь это понятно. Скрипт делает то, что что всегда, за исключением создания не links.db, а links1.db, хотя и тут название опять же роли не играет.

Doc 10.01.2010 17:55

Цитата:

Сообщение от Taldyk (Сообщение 691307)
а название тут причём?
Вы вызываете скрипт со своей страницы. Как его зовут это роли не играет, надеюсь это понятно. Скрипт делает то, что что всегда, за исключением создания не links.db, а links1.db, хотя и тут название опять же роли не играет.

Спасибо, попробую.


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

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