Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )


> Кодировка, Проблема с установкой кодировки
Гость_Guest_Andrei_*_*
сообщение 7:11:2005, 08:52
Цитата Ответить 





Инопланетный гость






    


У меня проблема с отображением кодировки (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 и выводят каракули. Если установить кодировку вручную, страница отображается нормально, но при переходе на другую страницу история повторяется. Кто-нибудь знает как с этим бороться?
Подняться вверх 
 
Сообщение #1
 
Новая тема 
Ответов (1 - 12)
dkameleon
Вставить ник
сообщение 10:11:2005, 18:40
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 17
Регистрация: 6:08:2005
Пользователь №: 2 113



Репутация:   0  


Бороться надо с глупыми броузерами, которые игнорируют Чарсет.
Или может быть у тебя документ реально в Юникоде сделан? smile.gif
Проверь настройки редактора, которым правил странички.
Подняться вверх 
 
Сообщение #2
sergushkin
Вставить ник
сообщение 13:11:2005, 13:57
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 18
Регистрация: 13:11:2005
Из: Belorus, Novopolotsk
Пользователь №: 2 557



Репутация:   0  


У меня была такая проблема. У меня был установлен 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™ 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 естественноsmile.gif.

Заканчивая свою статью всем этим выше описанным и не обратив внимание на проблему сборки rpm пакетов, было бы с моей стороны не этичноsmile.gif). Проблема заключается в том, что в RedHat посчитали необходимостью включить сборку debug rpm пакета к каждой собираемой программе, на что у многих вызывает сильное раздражение и зуд начистить кому-нибудь репу за такое извращение, но и это еще не все, ребята из RedHat'а придумали еще одну засаду, если в секции %files spec файла не описан файл, который появился $RPM_BUILD_DIR после %install, то такой пакет считается неправильным и сборка завершается ошибкой, на что реакция за такую подлость вызывает еще большую охоту начистить уже не одну репуwink.gif)))... На самом деле это все правится в макрос файлах и навсегда избавляет от тех неприятностях которых я описал, для этого возмите мои исправленные макросы и замените их из этого архива в соответсвующих директориях, а именно в /usr/lib/rpm и /usr/lib/rpm/redhat....
Подняться вверх 
 
Сообщение #3
Гость_Jaga__*
сообщение 22:04:2006, 11:55
Цитата Ответить 





Инопланетный гость






    


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


Рабочий с лопатой
Иконка группы

Группа: Модеры
Сообщений: 568
Регистрация: 18:09:2005
Из: Минск
Пользователь №: 2 309



Репутация:   2  


все верноwink.gif
Подняться вверх 
 
Сообщение #5
ioni
Вставить ник
сообщение 12:05:2006, 08:49
Цитата Ответить 


Гуру
Иконка группы

Группа: Достойный программист
Сообщений: 261
Регистрация: 11:05:2006
Из: Левое полушарие
Пользователь №: 4 135



Репутация:   1  


ASP Linux?
Первой строкой файла определить как
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1251" LCID="1049"%>

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

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

Сообщение отредактировал ioni - 12:05:2006, 15:28
Подняться вверх 
 
Сообщение #6
sergushkin
Вставить ник
сообщение 12:05:2006, 19:29
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 18
Регистрация: 13:11:2005
Из: Belorus, Novopolotsk
Пользователь №: 2 557



Репутация:   0  


ioni я с вами согласен, но этого недостаточно. Нужно еще настроить и ОС, на которой установлен Web-сервер.
Подняться вверх 
 
Сообщение #7
Gisma
Вставить ник
сообщение 12:05:2006, 19:48
Цитата Ответить 


Рабочий с лопатой
Иконка группы

Группа: Модеры
Сообщений: 568
Регистрация: 18:09:2005
Из: Минск
Пользователь №: 2 309



Репутация:   2  


сколько повторять : header("Content-type: text/html; charset=cp-1251");
В клинических случаях в .htaccess забить:
AddDefaultCharset windows-1251
Подняться вверх 
 
Сообщение #8
neeoon
Вставить ник
сообщение 13:05:2006, 12:02
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 3
Регистрация: 12:05:2006
Пользователь №: 4 169



Репутация:   0  


я прописал header("Content-Type: text/html; charset=windows-1251"); в ие 6.0 - 7.0 все нормально, но в ие 5.0 и 5.5 все равно не понимает sad.gif
Подняться вверх 
 
Сообщение #9
Gisma
Вставить ник
сообщение 14:05:2006, 12:10
Цитата Ответить 


Рабочий с лопатой
Иконка группы

Группа: Модеры
Сообщений: 568
Регистрация: 18:09:2005
Из: Минск
Пользователь №: 2 309



Репутация:   2  


убей осла об стену, хотя что-то ты опять не то сделал. раньше работало и под 4-тым осломsmile.gif поставь какой плагин, который покажет принятые хедеры, вообще посмотри как в хедерах с пробелами все должно соответсвовать RFC
Подняться вверх 
 
Сообщение #10
_serg_
Вставить ник
сообщение 15:05:2006, 07:53
Цитата Ответить 


Продвинутый
Иконка группы

Группа: Новенький
Сообщений: 183
Регистрация: 27:02:2006
Пользователь №: 3 006



Репутация:   0  


сделай wget адрес_кривой_страницы
и посмотри на заголовки которые выдает сервер
может там что не так?
Подняться вверх 
 
Сообщение #11
ioni
Вставить ник
сообщение 15:05:2006, 15:16
Цитата Ответить 


Гуру
Иконка группы

Группа: Достойный программист
Сообщений: 261
Регистрация: 11:05:2006
Из: Левое полушарие
Пользователь №: 4 135



Репутация:   1  


Обязательно к прочтению!

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

1/ Настроить сценарий кодировкой по умолчанию директивой
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1251" LCID="1049"%>


2/ Непосредственно указать кодировку при генерировании данных путем
<% Response.Charset= "Windows-1251" %>
второй строкой в странице.

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

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

Сообщение отредактировал ioni - 15:05:2006, 15:16
Подняться вверх 
 
Сообщение #12
Эл_
Вставить ник
сообщение 25:05:2006, 19:12
Цитата Ответить 


Новенький
Иконка группы

Группа: Новенький
Сообщений: 13
Регистрация: 25:05:2006
Из: США, Редмонд, WA
Пользователь №: 4 416



Репутация:   0  


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


Ответить  Новая тема 

 

RSS Текстовая версия Сейчас: 9:01:2009 - 00:12

с нами можно связаться по:
телефону: +375-(29)-632-60-67
e-mail:info@codeby.net