Linux за българи: Форуми

Програмиране => Web development => Темата е започната от: nov_chovek в Aug 20, 2007, 10:47



Титла: автоматично познаване на кодировката на html
Публикувано от: nov_chovek в Aug 20, 2007, 10:47
Имам сайт на който съм сложил:

Цитат
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">


Обаче браузърите не познават това и си бичат на цп1251?!? защо?? Файловете също са записани с utf-8.

Ето го и сайта:

http://mhrsitov.info/dict

Нямам никаква идея защо става така, а вие?

EDIT: данните излизат от mysql, където също се записват в utf-8





Титла: автоматично познаване на кодировката на html
Публикувано от: deltaplaner в Aug 20, 2007, 11:11
Струва ми се, че страницата ти не е добре структурирана. Нямаш <head>-секция, нямаш <body>-секция също. Сложи реда с енкодинга в <head>-секцията.


Титла: автоматично познаване на кодировката на html
Публикувано от: nov_chovek в Aug 20, 2007, 11:33
сложих го - същата работа.
досега съм нямал проблеми ако не слагам <head> секция.


Титла: автоматично познаване на кодировката на html
Публикувано от: paucku в Aug 20, 2007, 11:44
Сървърът ти казва на браузъра, че кодировката е widows-1251.

Някъде в конфигурациите на Apache-то (ако си с такова), трабва да зададеш кодировка по подразбиране:
Примерен код
AddDefaultCharset utf-8

(или да провериш дали не е зададена вече и ти просто да я отмениш)

П.П. Препоръчвам ти да си оправиш страницата, както ти писаха по-горе. Тя не е по стандартите, което означава, че най-вероятно ще имаш проблеми да й кажеш точно, как да изглежда. Структурата трябва да е следната:
Цитат

<html>
<head>
<style>
...
</style>

</head>
<body>
...
</body>

</html>

Т.е. <style> се намира в <head>.

Отиди на този адрес и си провери страницата
http://validator.w3.org/

Много интересни неща ще ти покаже ;)

Едно от нещата за твоята страница е:
Цитат
Character Encoding mismatch!

The character encoding specified in the HTTP header (windows-1251) is different from the value in the <meta> element (utf-8). I will use the value from the HTTP header (windows-1251) for this validation.

Което най-вероятно означава, че уеб сървърът ти казва, че кодировката ти е windows-1251.





Титла: автоматично познаване на кодировката на html
Публикувано от: nov_chovek в Aug 20, 2007, 11:49
@paucku: Ами аз съм на хостинг, няма как да бърникам по httpd.conf.

някакво друго решение?

ако нямаш предложения ще се мъча с iconv() функцията на php измисля нещо.


Титла: автоматично познаване на кодировката на html
Публикувано от: paucku в Aug 20, 2007, 11:56
Цитат (nov_chovek @ Авг. 20 2007,11:49)
@paucku: Ами аз съм на хостинг, няма как да бърникам по httpd.conf.

някакво друго решение?

ако нямаш предложения ще се мъча с iconv() функцията на php измисля нещо.

Няма нужда да бърникаш там. Трябва да си направиш файл .htaccess и да го сложиш в директория dict. Като гледам блога ти е в utf-8. Виж как е написан .htaccess файла оттам.





Титла: автоматично познаване на кодировката на html
Публикувано от: nov_chovek в Aug 20, 2007, 11:57
Ами добре де, опраих структурата на ХТМЛ-а, обаче как да се оправя със това че сървъра има енкодинг 1251??

Нали по принцип ако сайта си посочи енкодинг, браузъра трябва да следва него, не този на сървъра?!?! Обърках се тотално :)


Титла: автоматично познаване на кодировката на html
Публикувано от: paucku в Aug 20, 2007, 12:36
Цитат (nov_chovek @ Авг. 20 2007,11:57)
Ами добре де, опраих структурата на ХТМЛ-а, обаче как да се оправя със това че сървъра има енкодинг 1251??

Нали по принцип ако сайта си посочи енкодинг, браузъра трябва да следва него, не този на сървъра?!?! Обърках се тотално :)

Сървърът е "по-силен" от конкретната уеб страница. Примерно на hit.bg и на data.bg няма значение, какво пишеш в head частта на страницата си — там винаги енкодинга е windows-1251. Обаче повечето хостинг провайдъри дават възможност да си направиш собствен файл .htaccess, където да си напишеш настройки на уеб сървъра. Като гледам, щом блога ти е на UTF-8, значи и тази страница ще може. Виж оттам как е направено.

П.П. Файла ".htaccess" започва с точка, което означава, че за Линукс и може би за някои FTP клиенти, той се счита за скрит файл. Тоест, трябва да отметнеш някъде, да се виждат скритите файлове.


Титла: автоматично познаване на кодировката на html
Публикувано от: VladSun в Aug 20, 2007, 13:37
Можеш и да изпратиш собствен header за кодировката ...
PHP:
Примерен код
header('Content-type: text/html; charset=UTF-8');


Титла: автоматично познаване на кодировката на html
Публикувано от: nov_chovek в Aug 20, 2007, 15:45
Пробвах с .htaccess, но явно админите са направили да се оувъррайдва тоя файл, демек да го прескача.

Обаче решението на VladSun е пушка и върви супер - мерси много. Хитро е :)


Титла: автоматично познаване на кодировката на html
Публикувано от: VladSun в Aug 20, 2007, 16:10
Радвам се, че съм помогнал :)