Перейти к содержанию
Форум поддержки пользователей VamShop

Новая версия VaM Shop 1.35


support

Рекомендуемые сообщения

  • Ответов 100
  • Created
  • Последний ответ

Top Posters In This Topic

  • support

    43

  • terrom

    28

  • ABerezin

    11

  • a69

    5

Потому что CMS Xoops и форум SMF не в utf8 кодировке.

По большому счёту без нет никакой разницы, какая кодировка страницы.

Просто utf8 универсальная кодировка, она едина для всех языков.

Например если у тебя магазин на немецком и русском одновременно, то в случае НЕ utf8, русские символы не будут видны в немецкой версии и наоборот.

С utf8 такой проблемы не будет.

А так как магазином пользуются всё-таки не только в России, но я знаю например, что пользуются и в Израиле, Польше, Азербайджане, Бельгии, Германии и т.д., я вот посчитал, что несмотря на все проблемы выбор utf8 кодироки - это правильны выбор.

Ссылка на сообщение
Поделиться на другие сайты

Ну тогда:

  function vam_break_string($string, $len, $break_char = '-') {
    $l = 0;
    $output = '';
    $string = iconv('utf-8', 'cp1251', $string);
    for ($i=0, $n=strlen($string); $i<$n; $i++) {
      $char = substr($string, $i, 1);
      if ($char != ' ') {
        $l++;
      } else {
        $l = 0;
      }
      if ($l > $len) {
        $l = 1;
        $output .= $break_char;
      }
      $output .= $char;
    }
    $output = iconv('cp1251', 'utf-8', $output);
    return $output;
  }[/code]

Если нет обработки мультибайтовых строк, то самое простое использовать однобайтовую, а для этого надо перекодировать. Другое дело, что сразу возникнут проблемы с языками не совместимыми с cp1251.

Добавил данный код в магазин.

Правда добавил проверку - if (function_exists('iconv')) ...

Ссылка на сообщение
Поделиться на другие сайты

Вот ещё такой вот вариант у меня работает нормально, без использования iconv:


  function vam_break_string($string, $len, $break_char = '-') {
    $l = 0;
    $output = '';
    for ($i=0, $n=mb_strlen($string); $i<$n; $i++) {
      $char = mb_substr($string, $i, 1);
      if ($char != ' ') {
        $l++;
      } else {
        $l = 0;
      }
      if ($l > $len) {
        $l = 1;
        $output .= $break_char;
      }
      $output .= $char;
    }
    return $output;
  }
   
if (function_exists('mb_substr')) {
    mb_internal_encoding("UTF-8");
}
else {
    function mb_substr($str, $start, $len = '', $encoding="UTF-8"){
        $limit = strlen($str);
        for ($s = 0; $start > 0;--$start) {// found the real start
            if ($s >= $limit)
                break;
            if ($str[$s] <= "\x7F")
                ++$s;
            else {
                ++$s; // skip length
                while ($str[$s] >= "\x80" && $str[$s] <= "\xBF")
                    ++$s;
            }
        }
        if ($len == '')
            return substr($str, $s);
        else
            for ($e = $s; $len > 0; --$len) {//found the real end
                if ($e >= $limit)
                    break;
                if ($str[$e] <= "\x7F")
                    ++$e;
                else {
                    ++$e;//skip length
                    while ($str[$e] >= "\x80" && $str[$e] <= "\xBF" && $e < $limit)
                        ++$e;
                      }
            }
        return substr($str, $s, $e - $s);
    }
}

if (!function_exists('mb_strlen'))
{
function mb_strlen($t, $encoding = 'UTF-8')
{
return strlen(utf8_decode($t));
}
}
[/code]

Ссылка на сообщение
Поделиться на другие сайты

Смею заметить, что в случае использования функция обработки мультибайтовых строк (mb_*) их надо использовать либо с указанием кодировки (в данном случае UTF-8), которую надо добавить как последний параметр в функции (например mb_strlen($string,'UTF-8') или mb_substr($string, $i, 1,'UTF-8')), либо надо в самом начале всех скриптов (наверно application_top.php) добавить mb_internal_encoding('UTF-8')

Ссылка на сообщение
Поделиться на другие сайты

У тебя описания налипают друг на друга, используй вот этот /templates/vamshop/stylesheet.css файл.

stylesheet.css

Ссылка на сообщение
Поделиться на другие сайты
  • 2 weeks later...

у меня такая проблемка постоянно слетает кодировка после обновления, в браузере постоянно приходится ставить в ручную utf-8

Ссылка на сообщение
Поделиться на другие сайты

Доброго дня

Решил немного поэкспериментировать у меня магазин на 1.4, сделал дубликат, и перевел дубликат на 1.5, вот получилось что то, что я вбивал - кракозяблики, то что родное все в порядке.

в .htaccess вбил нужное

Как так получилось?

Ссылка на сообщение
Поделиться на другие сайты

А это точно версия 1.35?

Точно в /inc/vam_db_connect.inc.php указана кодировка соединения с базой utf8?

Судя по внешнему виду, кодировка базы не та.

Нужно тогда руками выгржать базу данных, переводить её в utf8 и назад загружать в магазин.

Ссылка на сообщение
Поделиться на другие сайты

О версии я указал пару сообщений назад, "Ответ #89"

Повторюсь:

Я хотел перевести версию 1.4 на версию 1.5

В архиве апгрейта на версию 1.5 прилагался текстовый файл, где была ссылка на этот топик, для вопросов при проблемах при переходе.

После апгрейта, русские буквачки что шли по умолчанию с ВамШопом переконвертировались, а все что я набивал непосильным трудом - как были в кракозябликах так и остались.

p.s. А как руками перевести базу в utf8?

p.p.s Вот что в файле /inc/vam_db_connect.inc.php

 

  @mysql_select_db($database);

  @mysql_query("SET CHARACTER SET utf8");

  @mysql_query("SET NAMES utf8");

  @mysql_query("SET COLLATION utf8_general_ci");

Ссылка на сообщение
Поделиться на другие сайты

Во-первых, пиши правильно версии, если можно, а то не понятно.

1.35 и 1.35.

Ты сделал копию базы перед установкой 1.35 патча?

Если сделал, попробуй так:

Открывай этот файл в каком-то редактор текстовом, который умеет сохранять в utf8.

Сохраняй базу в utf8, загружай в mysql её, затем ставь 1.35 патч, только не запускай скриптик cp1251toutf8, у тебя база уже в utf8 кодивровке.

т.е. тебе нужно руками перевести базу в utf8, затем ставить 1.35 патч, не запуская файл cp1251toutf8.php, тогда, по идее, будет нормально.

Ссылка на сообщение
Поделиться на другие сайты

Ты знаеш Vam не получается почему то.

Все делаю по инструкции, 2 раза пробовал, для чистоты эксперимента.

В utf8 переводил  с помощью notepad2.

Ниче не пойму, набивать базу заново ох как не охота.

Че делать то???

Повторил 3-й раз, заработало  ??? вроде делал все тоже самое, х.з. че такое, фух я рад  :)

Ссылка на сообщение
Поделиться на другие сайты
  • 2 years later...

×
×
  • Создать...