За последние 24 часа нас посетили 18328 программистов и 1637 роботов. Сейчас ищут 1708 программистов ...

Проблема с кодировкой отдельных символов

Тема в разделе "Установка PHP", создана пользователем Kosiak, 6 авг 2008.

  1. Kosiak

    Kosiak Активный пользователь

    С нами с:
    6 авг 2008
    Сообщения:
    5
    Симпатии:
    0
    Использовался Денвер на локалхосте:
    Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4
    MySQL 5.0.45

    В некоторых местах появились вопросы вместо русских букв. Прямо посреди слова:
    Сe��час на сайте
    ��азделы
    По��ожие материалы
    С��учайная новость

    Сам сайт разрабатывался на Joomla 1.5 (т.е. изначально в UTF-8 и SET NAMES 'utf8' прописаны), таблицы базы MySQL utf8_general_ci
    модуль mbstring подключён

    Попробовав перенести сайт на хостинговый виртуальный сервер я получил полностью рабочий сайт. Но проблема в том, что этот сервер не мой, а сайт планируется установить на выделенный сервер php 5.2.6 /Apache 2.2.9 /MySQL 5.0.51a в котором также наблюдаются аналогичные проблемы.

    Подскажите, что править на сервере или в конфигах компонентов, чтобы заставить корректно отрабатывать UTF-8, т.к. понятно, что проблема не в скрипте, а в настройках сервера.

    PS Пробовал на локалхосте ставить более старые компоненты php4 /Apache 1.3 /MySQL4 (точные версии не помню, но всё это входит в Денвер2) - ситуация аналогичная - UTF-8 туфтит

    PPS штукой mbstring.func_overload воспользоваться не получится - со скриптом несовместима.
     
  2. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Для mbstring какая внутренняя кодировка?
     
  3. Kosiak

    Kosiak Активный пользователь

    С нами с:
    6 авг 2008
    Сообщения:
    5
    Симпатии:
    0
    Не понял вопроса. mbstring просто включил как модуль PHP и всё.
    Что вы имеете ввиду, и как это посмотреть?
     
  4. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    Код (Text):
    1. mbstring.internal_encoding
    В php.ini. Должно быть UTF-8
     
  5. Kosiak

    Kosiak Активный пользователь

    С нами с:
    6 авг 2008
    Сообщения:
    5
    Симпатии:
    0
    О как. Я на самом деле через .htaccess пробовал это прописать - не помогало, но и в php.ini много всякой интересности:
    Код (Text):
    1. [mbstring]
    2. ; language for internal character representation.
    3. ;mbstring.language = Japanese
    4.  
    5. ; internal/script encoding.
    6. ; Some encoding cannot work as internal encoding.
    7. ; (e.g. SJIS, BIG5, ISO-2022-*)
    8. ;mbstring.internal_encoding = EUC-JP
    9.  
    10. ; http input encoding.
    11. ;mbstring.http_input = auto
    12.  
    13. ; http output encoding. mb_output_handler must be
    14. ; registered as output buffer to function
    15. ;mbstring.http_output = SJIS
    16.  
    17. ; enable automatic encoding translation according to
    18. ; mbstring.internal_encoding setting. Input chars are
    19. ; converted to internal encoding by setting this to On.
    20. ; Note: Do _not_ use automatic encoding translation for
    21. ;       portable libs/applications.
    22. ;mbstring.encoding_translation = Off
    23.  
    24. ; automatic encoding detection order.
    25. ; auto means
    26. ;mbstring.detect_order = auto
    27.  
    28. ; substitute_character used when character cannot be converted
    29. ; one from another
    30. ;mbstring.substitute_character = none;
    31.  
    32. ; overload(replace) single byte functions by mbstring functions.
    33. ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(),
    34. ; etc. Possible values are 0,1,2,4 or combination of them.
    35. ; For example, 7 for overload everything.
    36. ; 0: No overload
    37. ; 1: Overload mail() function
    38. ; 2: Overload str*() functions
    39. ; 4: Overload ereg*() functions
    40. ;mbstring.func_overload = 0
    Подскажите, как примерно должно быть?
     
  6. Kosiak

    Kosiak Активный пользователь

    С нами с:
    6 авг 2008
    Сообщения:
    5
    Симпатии:
    0
    Вношу изменения - реакции нет. Всё равно отдельные символы ломаются.

    В данный момент вот такая конфигурация:
    Код (Text):
    1. [mbstring]
    2. mbstring.language = Neutral
    3. mbstring.internal_encoding = UTF-8
    4. mbstring.http_input = auto
    5. mbstring.http_output = UTF-8
    6. mbstring.encoding_translation = 0
    7. mbstring.detect_order = auto
    8. mbstring.substitute_character = none;
    9. mbstring.func_overload = 0
     
  7. Kosiak

    Kosiak Активный пользователь

    С нами с:
    6 авг 2008
    Сообщения:
    5
    Симпатии:
    0
    Сейчас узнал, что на хостинге стоит (это там, где всё хорошо работает):

    Код (Text):
    1. [mbstring]
    2. ; language for internal character representation.
    3. ;mbstring.language = Japanese
    4.  
    5. ; internal/script encoding.
    6. ; Some encoding cannot work as internal encoding.
    7. ; (e.g. SJIS, BIG5, ISO-2022-*)
    8. ;mbstring.internal_encoding = EUC-JP
    9.  
    10. ; http input encoding.
    11. ;mbstring.http_input = auto
    12.  
    13. ; http output encoding. mb_output_handler must be ; registered as output buffer to function ;mbstring.http_output = SJIS
    14.  
    15. ; enable automatic encoding translation according to ; mbstring.internal_encoding setting. Input chars are ; converted to internal encoding by setting this to On.
    16. ; Note: Do _not_ use automatic encoding translation for
    17. ;       portable libs/applications.
    18. ;mbstring.encoding_translation = Off
    19.  
    20. ; automatic encoding detection order.
    21. ; auto means
    22. ;mbstring.detect_order = auto
    23.  
    24. ; substitute_character used when character cannot be converted ; one from another ;mbstring.substitute_character = none;
    25.  
    26. ; overload(replace) single byte functions by mbstring functions.
    27. ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), ; etc. Possible values are 0,1,2,4 or combination of them.
    28. ; For example, 7 for overload everything.
    29. ; 0: No overload
    30. ; 1: Overload mail() function
    31. ; 2: Overload str*() functions
    32. ; 4: Overload ereg*() functions
    33. ;mbstring.func_overload = 0
    Чую не в mbstring проблема-то...
     
  8. Predator

    Predator Активный пользователь

    С нами с:
    31 мар 2008
    Сообщения:
    64
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Мне помогло следующее, это скорее всего MySQL кодит у тебя в другую кодировку...
    Открой файл конфига мускула my.ini и добавь в него или исправь следующее:

    [mysql]

    default-character-set = utf8

    [mysqld]

    default-character-set= utf8
    character_set_server = utf8

    Мне помогло, думаю у тебя проблема в этом же.