Кодировка

Тема в разделе "Общие вопросы", создана пользователем Guest_Andrei_*, 7 ноя 2005.

Статус темы:
Закрыта.
  1. Guest_Andrei_*

    Guest_Andrei_* Гость

    У меня проблема с отображением кодировки (IE, Firefox).
    Предыстория такова. Сначала у меня стояла Win98+Apach+php+mysql и под этим хозяйством крутились (точнее только разрабатывались) сайты. Теперь я поставил на другой раздел ASPLinux10, подмонтировал старую www-папку (из раздела Win98), скопировал сайт в раздел ASPLinux (/var/www/html) и запустил его. В заголовке стоит META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251", но броузеры устанавливают UNICODE и выводят каракули. Если установить кодировку вручную, страница отображается нормально, но при переходе на другую страницу история повторяется. Кто-нибудь знает как с этим бороться?
     
  2. dkameleon

    dkameleon Гость

    Бороться надо с глупыми броузерами, которые игнорируют Чарсет.
    Или может быть у тебя документ реально в Юникоде сделан? :)
    Проверь настройки редактора, которым правил странички.
     
  3. sergushkin

    sergushkin Гость

    У меня была такая проблема. У меня был установлен RedHad9
    Причиной являются не браузеры, а настройки операционной ситстемы.

    Привожу описание настройки


    Настройка RedHat 9 на русскую локаль KOI8-R


    В свое время, после выхода в свет RedHat версии 8.0, мною была написана статья "Переход с RedHat-7.x на RedHat-8.0", в которой описывалось как заменить локаль UTF-8 на KOI8-R в связи глючности и проблемности русской локали UTF-8, с выходом RedHat версии 9 казалось, что эту проблему решили и русская локаль UTF-8 заработала как надо, правда не везде гладко, но решаемо. Однако многие пользователи RH9 хотят старую хорошо отработанную временем локаль KOI8-R, оно и понятно, UTF-8 все еще имеет проблемы с консольными приложениями, да и с некоторым старым софтом, от которого не хочется отказываться. Видимо по этой причине меня стали забрасывать письмами с просьбой рассказать как сделать такой переход, у меня нашлось немного времени это сделать, поэтому выполняю просьбу тех, кто меня об этом просил.

    И так, первым делом надо установить локаль KOI8-R в /etc/sysconfig/i18n как это делалось обычно для RH7.x:

    LANG="ru_RU.KOI8-R"
    SUPPORTED="ru_RU.KOI8-R:ru_RU.koi8r:ru_RU:ru"
    SYSFONT="cyr-sun16"
    SYSFONTACM="koi8-u"

    Примечание: Для RH8.0 приходилось ставить пакет kbd(consoletools) из RH7x, для RH9 этого делать не надо!!!

    Далее, надо установить расскладку клавиатуры для данной локали, как обычно идем в /etc/sysconfig/keyboard и делаем примерно так:

    KEYBOARDTYPE="pc"
    KEYTABLE="ru-ms"

    Вот собственно и все, что касается локализации, однако некоторые приложения в RH9 сильно завязаны на юникод и требуют замены, так как обычными настройками заставить их работать с KOI8-R мне не удалось. Почти все русские man'ы в RH9 конвертнуты в UTF-8, и поэтому пришлось немного доработать nroff, что бы он на лету конвертил из UTF-8 в KOI8-R, так что имейте это ввиду, если будут проблеммы с манами в кодировке KOI8-R.
    Вот список пакетов подлежащих обязательной замене:
    groff-1.18.1-24.i386.rpm
    groff-perl-1.18.1-24.i386.rpm
    groff-gxditview-1.18.1-24.i386.rpm
    less-378-8.i386.rpm

    Midnight Commander желательно тоже сменить:
    mc-4.6.0-5.i386.rpm
    Дополнительные необходимые приложения для MC:
    Архиватор ARJ arj-3.10g-1.i386.rpm или русская версия arj-3.10g-ru.1.i386.rpm
    Консольный MP3 плеер MPG123 mpg123-0.59s.mc2-2.i386.rpm или под K7 mpg123-0.59s.mc2-2.athlon.rpm

    Все пакеты мы устанавливаем как rpm -U [имя пакета], кроме arj и mpg123, так как они ранее отсутствовали в системе и поэтому лучше установить их как rpm -i [имя пакета]. Про мою версию mpg123 и ее отличие от оригинальной можно прочитать на http://mcmcc.bat.ru. После обновления и установки этих пакетов этап по "коинизации" консоли можно считать законченным и переходим к Х-ам.

    Х-ы практически не нуждаются в какой-либо доработки, если есть проблема с кодировкой в приложениях написанных на gtk12, то она решается правкой /etc/gtk/gtkrc.ru примерно так:

    style "gtk-default-ru" {
    fontset = "-adobe-helvetica-medium-r-normal--12-*-*-*-*-*-koi8-*,\
    -*-arial-medium-r-normal--12-*-*-*-*-*-koi8-r,\
    -*-helvetica-medium-r-normal--12-*-*-*-*-*-koi8-r,\
    -*-arial-medium-r-normal--12-*-*-*-*-*-koi8-r,*-r-*"
    }
    class "GtkWidget" style "gtk-default-ru"

    Еще бы не плохо установить MS ttf фонты, я бы даже сказал обязательно:
    ttf_webms-1.0-2.i386.rpm

    Как и в RedHat 8.0 в 9-ой версии отсутсвует все, что связано с MP3, RedHat пошла на такой шаг после того как за распространение кодеков MP3 стали требовать денежные отчисления, поэтому все мультимедийные приложения содержащие связь с MP3 были модернизированы на уровне исходников и из них был удален весь код связаный с MP3. В принципе RedHat понять можно, им не охото в будушем иметь судебные разборки и проще подстраховаться заранее, но это положение касается распространителей, а не обычных пользователей и разработчиков, поэтому я подготовил некоторые пакеты дополнения, которые позволяют дополнить 9-ку возможностям работы с MP3.
    Если вы используете в своей работе десктоп KDE, то вам необходимо обновить пакет kdemultimedia:
    Для KDE-3.1 который идет в составе RH9:
    kdemultimedia-3.1-5.i386.rpm
    kdemultimedia-devel-3.1-5.i386.rpm
    Для KDE-3.1.2 сборку которой осуществляла группа разработчиков KDE специально для 9-ки:
    kdemultimedia-3.1.2-0.9x.2.i386.rpm
    kdemultimedia-devel-3.1.2-0.9x.2.i386.rpm
    Если для прослушивания музыки вы используете плеер XMMS, то для него я специально сделал отдельный MP3 плагин, описание этого плагина вы можете прочитать на http://mcmcc.bat.ru:
    mpg123-xmms-1.2.7-21.p.i386.rpm
    Возможно вам захочется создавать MP3 файлы, то енкодер LAME вам в этом поможет:
    lame-3.94-1.i386.rpm или версия для K7 lame-3.94-1.athlon.rpm
    lame-devel-3.94-1.i386.rpm
    Вот собственно и все, что касается MP3 и RH9...

    Хочу поделиться собранной мною JAVA v1.4.1 специально для RH9, как собрать самим JAVA SDK вы можете прочесть в моей статье "Самостоятельная сборка JAVA(tm) 2 SE v.1.4.1 из исходников с sun.com".

    Так же хочу обратить ваше внимание на пакет cdrtools v.2.0, для работы с пишущими DVD/CD-RW, который входит в состав RH9, а именно на утилиту mkisofs, для создания ISO имиджей CD дисков, в которую я интегрировал свои патчи для полной руссификации и о которых можно прочитать на http://mcmcc.bat.ru:
    cdda2wav-2.0-7.i386.rpm
    cdrecord-2.0-7.i386.rpm
    cdrecord-devel-2.0-7.i386.rpm
    mkisofs-2.0-7.i386.rpm

    В своей статье я указывал ссылки только на бинарные собранные rpm пакеты, но если кому интересны исходники пакетов в rpm, то вы можете взять их тут, кроме JAVA естественно;).

    Заканчивая свою статью всем этим выше описанным и не обратив внимание на проблему сборки rpm пакетов, было бы с моей стороны не этично;)). Проблема заключается в том, что в RedHat посчитали необходимостью включить сборку debug rpm пакета к каждой собираемой программе, на что у многих вызывает сильное раздражение и зуд начистить кому-нибудь репу за такое извращение, но и это еще не все, ребята из RedHat'а придумали еще одну засаду, если в секции %files spec файла не описан файл, который появился $RPM_BUILD_DIR после %install, то такой пакет считается неправильным и сборка завершается ошибкой, на что реакция за такую подлость вызывает еще большую охоту начистить уже не одну репу;))))... На самом деле это все правится в макрос файлах и навсегда избавляет от тех неприятностях которых я описал, для этого возмите мои исправленные макросы и замените их из этого архива в соответсвующих директориях, а именно в /usr/lib/rpm и /usr/lib/rpm/redhat....
     
  4. Jaga_

    Jaga_ Гость

    ну вы, ребята, даете. Это не браузер, он-то все как раз нормально делает. Получает http-заголовок от сервера и отображает страницу в том, в чем его просили. Если страницы статические, то нужно менять настройки самого сервера. Для Апач, например в файле настроек httpd.conf меняем строчку AddDefaultCharset с того, что там написано на то, что вам нужно. Рядом находятся сами названия этих кодировок, например cp-1251(для рус-вин-кодировки).
    Если страницы динамические (например, на PHP), то вопросы к PHP-модулям, или чем он там говорит на CGI. Как вариант, заменить объявление заголовка на вывод на печать строчки "Content-type: text/html; charset=cp-1251\n\n"
    ЗЫ А насчет UTF8 vs. KOI8-R - вопрос спорный, хотя и не имеет никакого отношения к сабжу (серверу по барабану, какого типа байты он отсылает)
     
  5. Gisma

    Gisma Гость

    все верно:)
     
  6. ioni

    ioni Well-Known Member

    Регистрация:
    11 май 2006
    Сообщения:
    351
    Симпатии:
    0
    ASP Linux?
    Первой строкой файла определить как
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1251" LCID="1049"%>

    Другими словами, указывать необходимо не только кодировку статической части HTML ("META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251" в заголовке), но и кодировку диманической части.

    В принципе это относиться к любому языку, не только к ASP
     
  7. sergushkin

    sergushkin Гость

    ioni я с вами согласен, но этого недостаточно. Нужно еще настроить и ОС, на которой установлен Web-сервер.
     
  8. Gisma

    Gisma Гость

    сколько повторять : header("Content-type: text/html; charset=cp-1251");
    В клинических случаях в .htaccess забить:
    AddDefaultCharset windows-1251
     
  9. neeoon

    neeoon Гость

    я прописал header("Content-Type: text/html; charset=windows-1251"); в ие 6.0 - 7.0 все нормально, но в ие 5.0 и 5.5 все равно не понимает :)
     
  10. Gisma

    Gisma Гость

    убей осла об стену, хотя что-то ты опять не то сделал. раньше работало и под 4-тым ослом:( поставь какой плагин, который покажет принятые хедеры, вообще посмотри как в хедерах с пробелами все должно соответсвовать RFC
     
  11. _serg_

    _serg_ Гость

    сделай wget адрес_кривой_страницы
    и посмотри на заголовки которые выдает сервер
    может там что не так?
     
  12. ioni

    ioni Well-Known Member

    Регистрация:
    11 май 2006
    Сообщения:
    351
    Симпатии:
    0
    Обязательно к прочтению!

    Так вот, чтобы уж совсем полностью и безоговорочно получить нужную кодировку, нужно выполнить три (!) действия (я про ASP/IIS)

    1/ Настроить сценарий кодировкой по умолчанию директивой
    Код (Text):
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1251" LCID="1049"%>
    2/ Непосредственно указать кодировку при генерировании данных путем
    Код (Text):
    <% Response.Charset= "Windows-1251" %>
    второй строкой в странице.

    3/ Обязательно указать мета-хедер
    Код (Text):
    META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251"
    в разделе <HEAD> самой страницы, т.е. внутри HTML

    Основания для того, чтобы дублировать вывод у меня появились после того, как я начал логически работать с выводом файлов - обратив внимание на то, что часто запросы winHTTP идут в стандартной кодировке, а не в той, которая указана (что в результате давало сразу несколько кодировок на странице и неправильное отображение как следствие)
     
  13. Гость

    У меня совсем недавно такое было. Виноват в моем случае был "Русский Апач", который думает, что он умнее тебя и корежит кодировку по своему усмотрению. Вот ссылочка, где мне обьясняли как это дело исправить: http://peterhost.ru/forum/viewtopic.php?t=728
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей