Xpoint
   [напомнить пароль]

Вопрос по кодировке

Метки: [без меток]
[удл]
2005-10-21 22:20:25 [обр] Horzer[досье]

У меня на одной из страничек слетает в ИЕ кодировка на турецкую.
В .htaccess Прописал: AddDefaultCharset windows-1251

так тоже пытался (вместо AddDefaultCharset windows-1251): header("charset: windows-1251")

Есть ли какая-нибудь функция в PHP чтоб как-нибудь восстонавливала правильную кодировку в некоторой строке $a ?

Что посоветуете вообще?

спустя 7 минут [обр] Rom McRitsky(0/441)[досье]

Вы уж определитесь, в чём проблема.
То ли в том, что IE неверно воспринимает кодировку страницы. То ли у Вас одна строка в неверной кодировке.

Что будет, если вручную указать кодировку в свойствах браузера? Если всё стаёт на свои места - то при помощи PHP можно отдать заголовок

header("Content-Type: text/html;charset=windows-1251");

Так же в документе можно указать кодировку при помощи

<meta http-equiv="content-type" content="text/html;charset=windows-1251">
спустя 31 минуту [обр] Алексей В. Иванов(9/2861)[досье]
Horzer[досье] смотрите отдаваемые заголовки сервером. header("charset: windows-1251") — неправильно.
спустя 12 часов [обр] Алексей Севрюков(0/1280)[досье]
спустя 24 минуты [обр] Horzer[досье]

[[Rom McRitsky[досье] У меня, возможно, некоторое слово (я его беру из мускула) в неправильной кодировке. Поэтому ИЕ коряво определяет кодировку. (Netscape 7 все нормально определяет). Допустим это слово (что в неправильно кодировке) выводится из переменной $a. Вот у меня вопрос: что с $a можно сделать, чтоб вывелась она в нужной кодировке?

header("Content-Type: text/html;charset=windows-1251"); - не помогает.

<meta http-equiv="content-type" content="text/html;charset=windows-1251"> - вообще вредно прописывать, т.к. при кодировке в браузере отличной от windows-1251 пользователь увидит пустую стр. и подумает, что просто нет страницы

Алексей В. Иванов[досье]Алексей Севрюков[досье] А как в ПХП посмотреть какие я отправил заголовки?

спустя 1 минуту [обр] Алексей В. Иванов(9/2861)[досье]
М Перенесено из форума "Программирование::PHP"
спустя 2 часа 17 минут [обр] Rom McRitsky(0/441)[досье]

Если "Netscape 7 все нормально определяет" - то дело не в кодировке строки. Кстати, а какую кодировку определяет Netscape?

Если отвечать прямо на Ваш вопрос, то перекодировать строку из одной кириллической кодировки в другую можно при помощи convert_cyr_string. Также при желании посмотрите в сторону iconv.

У Вас не стоит случайно "русский" apache?

спустя 35 минут [обр] Алексей Севрюков(0/1280)[досье]
Horzer[досье] Я же дал Вам ссылку где можно посмотреть заголовки, которые отдает Ваш скрипт.
спустя 3 минуты [обр] Давид Мзареулян(9/1003)[досье]

Вы не могли бы всё-таки ответить именно на вопрос Rom McRitsky[досье]? У Вас 1) ВСЯ СТРАНИЦА показывается в неправильной кодировке или 2) вся страница показывается правильно, и ТОЛЬКО ОДНА СТРОКА — неправильно?

Если 1), то 1а) какую кодировку определяет браузер для этой страницы и 1б) какие заголовки выдаёт для неё Ваш сервер?

<meta http-equiv="content-type" content="text/html;charset=windows-1251"> - вообще вредно прописывать, т.к. при кодировке в браузере отличной от windows-1251 пользователь увидит пустую стр. и подумает, что просто нет страницы

Кто Вам сказал такую глупость?

спустя 9 часов [обр] Horzer[досье]
Вы не могли бы всё-таки ответить именно на вопрос Rom McRitsky[досье]? У Вас 1) ВСЯ СТРАНИЦА показывается в неправильной кодировке или 2) вся страница показывается правильно, и ТОЛЬКО ОДНА СТРОКА — неправильно?

Итак заново:
Есть некоторая страница, просматривая которую в IE, браузер неправильно разпознает кодировку как турецкую - Вся страница в итоге в кроказябрах. Если вручную выставить нужную кодировку - win1251, то ВСЯ стр. теперь выглядит правильно. Далее я пытаюсь определить: не присутствуют ли на стр. символы(слова или может быть строки), которые в коде стр. изначально были написанны в нетой кодировке. Это могут быть какие-то англ. буквы. Потом я нахожу некоторое место в стр., где выводится переменная (допустим, для простоты) $a., значение которой берется из MySql(там кодировка должна быть тоже win1251). Если не выводить эту переменную, то кодировка стр. определяется правильно. Причем в различных вариациях (смотря какое значение выводится) по разному, т.е. если выводятся русскоязычные символы - то все ок.

Кто Вам сказал такую глупость?

У меня в ИЕ так. Возможно глюк, неважно. Но это явно не помогает ИЕ определить кодировку.

Алексей Севрюков[досье] Я не могу проверить заголовки, т.к. страница у меня на компе. Поэтому и переспросил. Кстати страница вашей ссылки глючит, я там хотел проверить заголовки от yandex.ru ))

Rom McRitsky[досье] Что за русский Apache? Явно нет. 1.3.26 Win.

Как бы вы ответили на такой вопрос: как "помочь" IE определить правильно кодировку?

спустя 44 секунды [обр] Horzer[досье]
Кстати, а какую кодировку определяет Netscape?
 win1251
спустя 22 минуты [обр] Алексей В. Иванов(9/2861)[досье]
Как бы вы ответили на такой вопрос: как "помочь" IE определить правильно кодировку?

Вам уже все сказали. Выставьте правильно кодировку. Браузер ничего не должен "додумывать" и "определять кодировку".

Зачем mysql приплели — не понятно. И не в склад и не в лад.

спустя 1 час 2 минуты [обр] Алексей Севрюков(0/1280)[досье]

Horzer[досье] Хм, не знаю что у Вас глючит, у меня все работает http://utils.smart-site.ru/headers/?url=http%3A%2F%2Fyandex.ru

Если на локалке смотрите - посмотрите через FF.

спустя 1 час 23 минуты [обр] Horzer[досье]

Алексей Севрюков[досье]работает через раз
В инет выкинул, кодировка не слетает...
Вот какие заголовки кстати:
HTTP/1.1 200 OK
Connection: close
Date: Sat, 22 Oct 2005 22:28:27 GMT
Server: Apache/1.3.33 (Unix) mod_ssl/2.8.22 OpenSSL/0.9.7d VDB/1.1.1
Content-Length: 0
Content-Type: text/html; charset=windows-1251
Client-Date: Sat, 22 Oct 2005 22:32:58 GMT
Client-Peer: 67.19.214.195:80
Client-Response-Num: 1
X-Powered-By: PHP/4.3.4

Если на локалке смотрите - посмотрите через FF.

 А что это ?? :o

Алексей В. Иванов[досье]Смотрите 1й и 5й посты, я выставлял кодировку.

спустя 9 часов [обр] Алексей В. Иванов(9/2861)[досье]
Horzer[досье] У Вас дома стоит Perl или менеджер закачек, который показывает заголовки ответа сервера?
спустя 4 часа 12 минут [обр] Horzer[досье]
У меня дома нет Perla. Заголовки я посмотрел тут: http://utils.smart-site.ru/headers/
спустя 1 час 14 минут [обр] Алексей В. Иванов(9/2861)[досье]
Заголовки для локальной копии, где не работает смотрели? Мы же про неё, вроде, как говорим.
спустя 6 минут [обр] Horzer[досье]
Алексей В. Иванов[досье]Я так и не понял, как мне дома посмотреть заголовки. ReGet-ом сейчас попробую...
спустя 10 минут [обр] Horzer[досье]
Вот, что выдал регет, про локальную копию
ReGet Deluxe 4.1 (build 240)
Input   5   18:10:29   23.10.2005   HTTP/1.1 200 OK
Input   5         Date: Sun, 23 Oct 2005 14:10:28 GMT
Input   5         Server: Apache/1.3.26 (Win32) DAV/1.0.3
Input   5         Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Input   5         Expires: Thu, 19 Nov 1981 08:52:00 GMT
Input   5         Pragma: no-cache
Input   5         X-Powered-By: PHP/4.3.4
Input   5         Set-Cookie: PHPSESSID=2a8b76e6401d0e022689da2b76f1f0f2; path=/
Input   5         Connection: close
Input   5         Content-Type: text/html;charset=windows-1251
спустя 4 минуты [обр] Horzer[досье]
А вот это получается, если убрать header("Content-Type: text/html;charset=windows-1251");
(в .htaccess присутствует AddDefaultCharset windows-1251)
ReGet Deluxe 4.1 (build 240)
Input   5   18:16:53   23.10.2005   HTTP/1.1 200 OK
Input   5         Date: Sun, 23 Oct 2005 14:16:52 GMT
Input   5         Server: Apache/1.3.26 (Win32) DAV/1.0.3
Input   5         Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Input   5         Expires: Thu, 19 Nov 1981 08:52:00 GMT
Input   5         Pragma: no-cache
Input   5         X-Powered-By: PHP/4.3.4
Input   5         Set-Cookie: PHPSESSID=2a8b76e6401d0e022689da2b76f1f0f2; path=/
Input   5         Connection: close
Input   5         Content-Type: text/html
спустя 33 минуты [обр] Rom McRitsky(0/441)[досье]
В обеих случах кодировка определяется некорректно? Первый вариант должен указывать браузеру использовать windows-1251. И не видно, чтобы сработала директива AddDefaultCharset (я говорю о втором случае).
спустя 2 часа 1 минуту [обр] Horzer[досье]
AddDefaultCharset windows-1251 кстатиприсутствует в одоих случаях. И в обоих случаях неправильно определяется автовыбором.
спустя 1 час 54 минуты [обр] Rom McRitsky(0/441)[досье]

Не видно результатов работы этой директивы. Попробуйте отключить её и в php добавить

header("Content-Type: text/html;charset=windows-1251");

Повторюсь - приведённые Вами здесь Вопрос по кодировке (313908) заголовки явно указывают браузеру использовать кодировку Windows-1251.

Используйте также meta, как было Вам посоветовано раньше.

Powered by POEM™ Engine Copyright © 2002-2005