Russian Qt Forum
Май 07, 2024, 22:54 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Кодировка html  (Прочитано 6677 раз)
sonicCat
Гость
« : Февраль 02, 2008, 21:40 »

Если открыть линк оперой или Explorer-ом
http://www.translate.google.com/translate_dict?q=telephone&hl=en&langpair=en%7Cru
то они паказывают что файл в UТF-8 ( charset=UTF-8 )

Если я загружаю фай с помощью Qt:
http("www.translate.google.com",80) - конструктор
http.get( "/translate_dict?q=man&hl=en&langpair=en%7Cru" , &buffer );

то в буфере у меня  charset=ISO-8859-1 и вместо русских букв &#4ре_цифры;
видать google берет откудато кауюто информацию  Улыбающийся по которой решает что присылать

Может кто подскажет что именно нужно добавить.
Записан
DpoHro
Гость
« Ответ #1 : Февраль 03, 2008, 01:40 »

Может кто подскажет что именно нужно добавить.
Если сервер от клиента что и берет, то через хидеры, туда и нужно добавлять...
http://www.w3.org/Protocols/rfc2616/rfc2616.html
+QHttpRequestHeader

Точного решения не знаю, самому интересно...
Записан
sonicCat
Гость
« Ответ #2 : Февраль 03, 2008, 11:41 »

фи, в моем случае оказалось все совсем просто: нужно было изменить hl=en на hl=ru
но при этом я получаю charset=windows-1251, в винде все отабражается нормально а вот как в UNIXах незнаю.

Также пробовал следующее:

Код:
telnet www.translate.google.com 80
GET /translate_dict HTTP/1.1

получал charset=ISO-8859-1
а если так:

Код:
telnet www.translate.google.com 80
GET /translate_dict HTTP/1.1
Accept-Language: ru

то получал charset=windows-1251
как Опера получает UТF-8 так и не понял т.к. если я добавляю Accept-Charset: utf-8 то это не меняет результата 

Цитировать
Спасибо за ссылку, в загловках по ней разбирался
Записан
Sokoloff
Гость
« Ответ #3 : Февраль 04, 2008, 10:59 »

Опера берет это из HTML и HTTP заголовков. Открой страницу и посмотри в исходном HTML коде первую строку:
Код:
<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8">
это HTML заголовок.

Есть еще HTTP заголовок Content-Type. В идеале они должны указывать на одинаковые кодировки, но так бывает не всегда. Кто важнее точно не знаю (см. например http://apache.lexa.ru/meta-http.html).
А так почитай http://www2.stack.ru/~julia/HTML4/charset.html, ну и гугл в помощь.
 

Записан
Sokoloff
Гость
« Ответ #4 : Февраль 04, 2008, 11:22 »

Вот специально посмотрел, HTTP заголовоки выглядят так:
Код:
HTTP/1.0 200 OK
Set-Cookie: PREF=ID=10ce15d86a31825d:TM=1202113110:LM=1202113110:S=tlLxpqjLgShPj5wS; expires=Wed, 03-Feb-2010 08:18:30 GMT; path=/; domain=.google.com
Content-Type: text/html; charset=ISO-8859-1
Server: TWS/0.9
Cache-Control: private, x-gzip-ok=""
Date: Mon, 04 Feb 2008 08:18:30 GMT
Connection: Close

Т.е. в HTTP заголовке указан один charset, а в HTM-е другой, в данном случае HTML-ный правильнее.
Записан
sonicCat
Гость
« Ответ #5 : Февраль 04, 2008, 12:20 »

А дело в том что у оперы в HTML
Код:
<html><head><meta http-equiv="content-type" content="text/html; charset=UTF-8">

А у меня ( когда загружаю страницу через telnet или через Qt )
Код:
<html><head><meta http-equiv="content-type" content="text/html; charset=windows-1251">

т.е. приходят разные html страницы
может опера уже сама переводит в UTF-8
« Последнее редактирование: Февраль 04, 2008, 12:23 от sonicCat » Записан
Sokoloff
Гость
« Ответ #6 : Февраль 04, 2008, 13:47 »

Посмотри с помощью Ethreal ( http://www.ethereal.com ) что передает опера и твоя программа.
IMHO дело в следующих строках в HTTP запросе:
Код:
Accept-Language: ru-RU,ru;
Accept-Charset:  iso-8859-1, utf-8, utf-16, *;
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.044 секунд. Запросов: 20.