Функция по смене кодировки

Статус
В этой теме нельзя размещать новые ответы.

falc

Мой дом здесь!
Регистрация
6 Авг 2006
Сообщения
340
Реакции
216
Есть такой код, как его заставить перекодировать из utf в cp-1251? Этот вариант у меня не работает. Применяется с аяксом, если это важно.

PHP:
function fixChars($str){
    global $C;
    
    if ($C->decodeUTF8InputOn=='0') return $str;
    $sFuncToUse = NULL;
    global $sEncoding;

    if (function_exists('iconv'))
    {
        $sFuncToUse = "iconv";
    }
    else if (function_exists('mb_convert_encoding'))
    {
        $sFuncToUse = "mb_convert_encoding";
    }
    else if ($sEncoding == "CP-1251")
    {
        $sFuncToUse = "utf8_decode";
    }
    else
    {
        return $str;
    }

    if ($sFuncToUse)
    {
        if (is_string($str))
        {
            if ($sFuncToUse == "iconv")
            {
                $sValue = iconv("UTF-8", $sEncoding.'//TRANSLIT', $str);
            }
            else if ($sFuncToUse == "mb_convert_encoding")
            {
                $sValue = mb_convert_encoding($str, $sEncoding, "UTF-8");
            }
            else
            {
                $sValue = utf8_decode($str);
            }
        }
    }
    return $sValue;
}


Добавлено через 7 минут
кстати если поменять 4 строчку if ($C->decodeUTF8InputOn=='0') на if ($C->decodeUTF8InputOn=='1')

то символы меняются на другие но текст не читабельный всё равно
 
Что это за объект $C и что делает функция decodeUTF8InputOn?
Какая версия PHP стоит? Если 4, то подключен ли модуль iconv? Так как в стандартной поставке в PHP 4 его нет.
 
Скрипт прикрепил, это компонент для тэгирования новостей в джумле, функция в конце файла tag.class.php в корне.
А версию пхп хостер не показывает вот:
Operation System GNU/LinuxPerl
Perl Version : v5.8.4 built for i386-linux-thread-multi
Perl Path :/usr/bin/perlSendmail
Path :/usr/sbin/sendmail
MySQL Version :4.1.11-Debian_4sarge7
 

Вложения

  • tags.v0.6.zip
    188,4 KB · Просмотры: 1
Код:
$str  = iconv("UTF-8", "win-1251", "This is a test.");
ы?)

Кстати если подключен модуль Multi-Byte String Functions (это можно посмотреть в phpinfo()), то можно воспользоваться этим:
Код:
$str = mb_convert_encoding($str, "UTF-8", "win-1251");
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху