|
|
|
| Сервер настроен на юникод. В дреме создаю простейшую страничку:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Тайтлы </title>
</head>
<body>
Тело страницы
</body>
</html>
|
Заголовок ответа такой:
Date: Sat, 06 Mar 2010 07:14:45 GMT
Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4
X-Powered-By: PHP/5.2.4
Content-Length: 284
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=UTF-8
200 OK
|
Всё нормально?
А разве не должны вместо русских букв отображаться нечитаемые знаки юникода? | |
|
|
|
|
|
|
|
для: Владимир55
(06.03.2010 в 10:46)
| | >А разве не должны вместо русских букв отображаться нечитаемые знаки юникода?
А что это такое? | |
|
|
|
|
|
|
|
для: Николай2357
(06.03.2010 в 11:22)
| | Я полагал, что для того, что бы браузер показал фразу "Алфавитный рейтинг:", в файле должен быть ее юникод-аналог
Алфавитный рейтинг:
|
Разве не так? | |
|
|
|
|
|
|
|
для: Владимир55
(06.03.2010 в 11:47)
| | Вот такая страница тоже работает, хотя она составлена совершенно иначе:
<?php
header('Content-type: text/html; charset="utf-8"');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title></title>
</head>
<body>
<?php
$data = 'Алфавитный рейтинг:';
echo $data = iconv('cp1251', 'utf-8', $data);
?>
</body>
</html>
|
И я никак не возьму в толк, как же надо делать!? | |
|
|
|
|
|
|
|
для: Владимир55
(06.03.2010 в 12:01)
| | Я почему спросил, мне невдомек просто, что подразумевалось под нечитаемымими символами.
Все символы читаются, если кодировка задана верно.
Если в случае, когда файл сохранен в кодировке win-1251 к примеру, а заголовок послан - utf-8, браузер может отреагировать неадекватно. А если все в порядке, то почему не должно читаться? | |
|
|
|
|
|
|
|
для: Николай2357
(06.03.2010 в 12:41)
| | В заголовке темы и в сообщении 06.03.2010 в 12:01 приведены два варианта кода страницы. Оба работают. Явная кодировка в utf-8 есть только во втором из них.
Какой вариант правильный? | |
|
|
|
|
|
|
|
для: Владимир55
(06.03.2010 в 13:32)
| | По всякому бывает. Бывает на сервере включена DefaultCharset и если не переопределить её в htaccess например или в php принудительно не вызвать header('content-type: text/html; charset=utf-8')
, то в заголовок ответа сервера будет то что в defaultCharset.
А бывает просто браузеры кэшируют. А юникод и utf-8 это разные кодировки, utf-8 просто как-бы формат перекодировки для передачи символов юникода.
//правильные оба варианта :) толлько по поводу верхнего и нижнего регистра слова utf-8 бывают загвоздки иногда | |
|
|
|
|
|
|
|
для: exp
(06.03.2010 в 14:28)
| | Загвоздки по поводу регистра слова utf-8 относятся к серверу или к браузеу клиента?
Если у меня нормально при определенном регистре слова utf-8, то есть ли уверенность, что и у всех посетителей тоже нормально работает? | |
|
|
|
|
|
|
|
для: Владимир55
(06.03.2010 в 14:52)
| | Можно попробовать, что гадать...
На самом деле у браузеров есть такая функция - автоматическое определение кодировки.
Но так как этот механизм далек от совершенства, то лучше дать ему инструкцию - в какой кодировке будет передана информация.
Лучше сделать это не метатегом (его вообще нужно выкинуть, ибо глючит) а заголовком. Либо хидером, либо самим сервером. (.htaccess хотя бы)
А дальше переживать стоит толко за то, что Вы отдаете пользователю. Если UTF-8, то ладушки. Если нет - и будут бракозябры нечитаемые символы. | |
|
|
|
|
|
|
|
для: Владимир55
(06.03.2010 в 14:52)
| | не смог найти где я такое замечал, клиент конечно , но сейчас из всех браузеров вроде все нормально utf-8 отобразили, хотя только единственный ff после обновления страницы когда совсем не в <meta> не в заголовках и не в <?xml ?> небыло кодировки отобразил нечитабельно. | |
|
|
|
|
|
|
|
для: exp
(06.03.2010 в 16:26)
| | Ё-моё, да уж пора прекращать дискутировать .
не бывает ни одного браузера в природе, который не отдаёт (выводит )документ в той кодировки, которую ЯВНО устанавливает(указывает) сервер в заголовках.ЭТО СТАНДАРТ!!!!!!!
ну разве кривой самописный браузер :))))
Так дайте же браузеру КОНКРЕТНУЮ кодировку отдачи документа,чтобы он не гадал ,что ж от него хотят. | |
|
|
|
|
|
|
|
для: oliss
(06.03.2010 в 18:46)
| | я и говорю что сейчас уже не смог найти у себя не одного такого браузера который вообще мне показал то что я видел раньше ? хотя может это и не просто браузер был, но точно клиент :)
Стандарты это громко сказано, на самом деле мне кажется это просто выбор разработчиков браузеров, конечно логичнее разобрать заголовки и больше при парсинге текста не анализировать кодировки, если было в заголовках.
Я всё искал по поводу имён самих кодировок, и так и оказалось
http://sensi.org/~alec/locale/other/charsets.html
нет никаких стандартов :) MS захотел, и его эксплорер начихательски относится к имени cp1251
, он прислушается только если там со всеми реверансами напишут windows-1251 :)
в PostgreSQL нужно говорить WIN1251 | |
|
|
|