CMS YourArticleDirectory-кодировка php скрипта.

Тема в разделе "Другие языки", создана пользователем игорь23, 5 авг 2009.

Статус темы:
Закрыта.
Модераторы: Цукер
  1. игорь23

    игорь23 Создатель

    Регистр.:
    4 янв 2008
    Сообщения:
    14
    Симпатии:
    0
    Здравствуйте! Разжился я нужным скриптом php (CMS YourArticleDirectory-ver2.7). Но вот без проблем как всегда не обшлось. Скрипт импортный и в нём две кодировки,
    ( utf8 и ISO-8859-1).UTF-8 ещё нормально но ISO-8859-1 не давала перевести на русский. Я все ISO-8859-1 заменил на UTF-8 и сохранил файлы без BOM. После этого русские буквы стали прописываться в шаблоне (Front и Adminка) нормально,а вот контент(статьи) с кракозябрами выводятся.
    Причём не определяются только буквы(ш,ч,и). Вторая проблема состоит в ссылка (SEF URL),они вообще пропали и стали такими(/----.htm). Пробовал в (.htacces) вставить не помогло.
    AddDefaultCharset UTF-8
    php_value default_charset UTF-8
    php_value mbstring.internal_encoding UTF-8
    Я не силён в PHP и прошу помочь добрым советом.
    Подскажите пожалуйста способы решения. Заранее благодарен!!!
     
  2. omfg

    omfg

    Регистр.:
    4 авг 2009
    Сообщения:
    159
    Симпатии:
    46
    Пробей весь скрипт на наличие функции iconv.
    Она скорее всего внутри скрипта переводит туда-сюда кодировки, т.к. у тебя используется одна - можешь смело удалять.
     
  3. игорь23

    игорь23 Создатель

    Регистр.:
    4 янв 2008
    Сообщения:
    14
    Симпатии:
    0
    Вот что нашлось,что из этого удалять?:(
    1)if (function_exists('iconv') && ($return = @iconv('UTF-8', 'UTF-8//IGNORE', $str)))
    2)if (function_exists('iconv') && ($return = @iconv($input, $output, $data)))
    3)$useIconv = true;
    if (isset($build_params['ignore-iconv'])) {
    $useIconv = !$build_params['ignore-iconv'];
    }
    foreach ($input as $hdr_name => $hdr_value) {
    if (preg_match('#([\x80-\xFF]){1}#', $hdr_value)) {
    if (function_exists('iconv_mime_encode') && $useIconv) {
    $imePrefs = array();
    if ($build_params['head_encoding'] == 'base64') {
    $imePrefs['scheme'] = 'B';
    } else {
    $imePrefs['scheme'] = 'Q';
    }
    $imePrefs['input-charset'] = $build_params['head_charset'];
    $imePrefs['output-charset'] = $build_params['head_charset'];
    $imePrefs['line-length'] = 74;
    $imePrefs['line-break-chars'] = "\r\n"; //Specified in RFC2047

    $hdr_value = iconv_mime_encode($hdr_name, $hdr_value, $imePrefs);
    $hdr_value = preg_replace("#^{$hdr_name}\:\ #", "", $hdr_value);
    } elseif ($build_params['head_encoding'] == 'base64') {
    //Base64 encoding has been selected.
    //Base64 encode the entire string
    $hdr_value = base64_encode($hdr_value);
     
  4. omfg

    omfg

    Регистр.:
    4 авг 2009
    Сообщения:
    159
    Симпатии:
    46
    Точно вам к сожалению не скажу, но попробуйте в третьей строке заменить $useIconv = true на $useIconv = false, возможно поможет, судя по контексту.
    еще перед этой строкой можете написать $build_params['ignore-iconv'] = true;

    Если не получиться, попробуйте методом дедукции, удалите первую строку, затем вторую :)
     
    игорь23 нравится это.
  5. игорь23

    игорь23 Создатель

    Регистр.:
    4 янв 2008
    Сообщения:
    14
    Симпатии:
    0
    Заменил но пока конкретных изменений не заметил. Буду тестить,если что отпишусь. Спасибо!
     
Статус темы:
Закрыта.