Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Создание сайта в юникоде
 
 автор: Владимир55   (06.03.2010 в 10:46)   письмо автору
 
 

Сервер настроен на юникод. В дреме создаю простейшую страничку:
<!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


Всё нормально?
А разве не должны вместо русских букв отображаться нечитаемые знаки юникода?

  Ответить  
 
 автор: Николай2357   (06.03.2010 в 11:22)   письмо автору
 
   для: Владимир55   (06.03.2010 в 10:46)
 

>А разве не должны вместо русских букв отображаться нечитаемые знаки юникода?
А что это такое?

  Ответить  
 
 автор: Владимир55   (06.03.2010 в 11:47)   письмо автору
 
   для: Николай2357   (06.03.2010 в 11:22)
 

Я полагал, что для того, что бы браузер показал фразу "Алфавитный рейтинг:", в файле должен быть ее юникод-аналог
Алфавитный СЂРµР№С‚РёРЅРі:


Разве не так?

  Ответить  
 
 автор: Владимир55   (06.03.2010 в 12:01)   письмо автору
 
   для: Владимир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>


И я никак не возьму в толк, как же надо делать!?

  Ответить  
 
 автор: Николай2357   (06.03.2010 в 12:41)   письмо автору
 
   для: Владимир55   (06.03.2010 в 12:01)
 

Я почему спросил, мне невдомек просто, что подразумевалось под нечитаемымими символами.
Все символы читаются, если кодировка задана верно.
Если в случае, когда файл сохранен в кодировке win-1251 к примеру, а заголовок послан - utf-8, браузер может отреагировать неадекватно. А если все в порядке, то почему не должно читаться?

  Ответить  
 
 автор: Владимир55   (06.03.2010 в 13:32)   письмо автору
 
   для: Николай2357   (06.03.2010 в 12:41)
 

В заголовке темы и в сообщении 06.03.2010 в 12:01 приведены два варианта кода страницы. Оба работают. Явная кодировка в utf-8 есть только во втором из них.

Какой вариант правильный?

  Ответить  
 
 автор: exp   (06.03.2010 в 14:28)   письмо автору
 
   для: Владимир55   (06.03.2010 в 13:32)
 

По всякому бывает. Бывает на сервере включена DefaultCharset и если не переопределить её в htaccess например или в php принудительно не вызвать header('content-type: text/html; charset=utf-8')
, то в заголовок ответа сервера будет то что в defaultCharset.
А бывает просто браузеры кэшируют. А юникод и utf-8 это разные кодировки, utf-8 просто как-бы формат перекодировки для передачи символов юникода.

//правильные оба варианта :) толлько по поводу верхнего и нижнего регистра слова utf-8 бывают загвоздки иногда

  Ответить  
 
 автор: Владимир55   (06.03.2010 в 14:52)   письмо автору
 
   для: exp   (06.03.2010 в 14:28)
 

Загвоздки по поводу регистра слова utf-8 относятся к серверу или к браузеу клиента?

Если у меня нормально при определенном регистре слова utf-8, то есть ли уверенность, что и у всех посетителей тоже нормально работает?

  Ответить  
 
 автор: Николай2357   (06.03.2010 в 15:44)   письмо автору
 
   для: Владимир55   (06.03.2010 в 14:52)
 

Можно попробовать, что гадать...
На самом деле у браузеров есть такая функция - автоматическое определение кодировки.
Но так как этот механизм далек от совершенства, то лучше дать ему инструкцию - в какой кодировке будет передана информация.
Лучше сделать это не метатегом (его вообще нужно выкинуть, ибо глючит) а заголовком. Либо хидером, либо самим сервером. (.htaccess хотя бы)

А дальше переживать стоит толко за то, что Вы отдаете пользователю. Если UTF-8, то ладушки. Если нет - и будут бракозябры нечитаемые символы.

  Ответить  
 
 автор: exp   (06.03.2010 в 16:26)   письмо автору
 
   для: Владимир55   (06.03.2010 в 14:52)
 

не смог найти где я такое замечал, клиент конечно , но сейчас из всех браузеров вроде все нормально utf-8 отобразили, хотя только единственный ff после обновления страницы когда совсем не в <meta> не в заголовках и не в <?xml ?> небыло кодировки отобразил нечитабельно.

  Ответить  
 
 автор: oliss   (06.03.2010 в 18:46)   письмо автору
 
   для: exp   (06.03.2010 в 16:26)
 

Ё-моё, да уж пора прекращать дискутировать .
не бывает ни одного браузера в природе, который не отдаёт (выводит )документ в той кодировки, которую ЯВНО устанавливает(указывает) сервер в заголовках.ЭТО СТАНДАРТ!!!!!!!
ну разве кривой самописный браузер :))))
Так дайте же браузеру КОНКРЕТНУЮ кодировку отдачи документа,чтобы он не гадал ,что ж от него хотят.

  Ответить  
 
 автор: exp   (06.03.2010 в 19:41)   письмо автору
 
   для: oliss   (06.03.2010 в 18:46)
 

я и говорю что сейчас уже не смог найти у себя не одного такого браузера который вообще мне показал то что я видел раньше ? хотя может это и не просто браузер был, но точно клиент :)

Стандарты это громко сказано, на самом деле мне кажется это просто выбор разработчиков браузеров, конечно логичнее разобрать заголовки и больше при парсинге текста не анализировать кодировки, если было в заголовках.
Я всё искал по поводу имён самих кодировок, и так и оказалось
http://sensi.org/~alec/locale/other/charsets.html
нет никаких стандартов :) MS захотел, и его эксплорер начихательски относится к имени cp1251
, он прислушается только если там со всеми реверансами напишут windows-1251 :)
в PostgreSQL нужно говорить WIN1251

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования