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

Форум MySQL

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

 

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

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

тема: Непонятная кодировка..
 
 автор: Арфей   (16.06.2010 в 17:48)   письмо автору
 
 

я думал проблемы уже позади но увы .. столкнулся со следующей
КОДИРОВКА..

заполняю я в форме

"Кашка"
в MySql записалось
"Кашка"
ввывел на другую форму эту запись
"Кашка"
считал её с формы и записал в MySql
"Кашка "



в результате в 2 таблицах 1 бд один и тото же текст с 2 разных кодировках

  Ответить  
 
 автор: Valick   (16.06.2010 в 17:56)   письмо автору
 
   для: Арфей   (16.06.2010 в 17:48)
 

вот так из "кашка" получилась "какашка"
__
рассказывайте начиная с кодировки БД, соединения с БД и самой страницы

  Ответить  
 
 автор: вред   (16.06.2010 в 17:59)
 
   для: Арфей   (16.06.2010 в 17:48)
 

И какой же запрос получает база? Сомневаюсь, что MySQL самостоятельно будет заморачиваться над преобразованиями html-сущностей.

  Ответить  
 
 автор: Trianon   (16.06.2010 в 17:59)   письмо автору
 
   для: Арфей   (16.06.2010 в 17:48)
 

может все же стоит в заголовке страницы с формой указывать корректную кодировку html-документа?

  Ответить  
 
 автор: Арфей   (16.06.2010 в 18:04)   письмо автору
 
   для: Trianon   (16.06.2010 в 17:59)
 

счас по порядку

  Ответить  
 
 автор: Арфей   (16.06.2010 в 18:13)   письмо автору
 
   для: Арфей   (16.06.2010 в 17:48)
 

Страница 1

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<meta http-equiv="content-type" content="text/html; charset=cp-1251">


отправляеться Ajax

в на сервак на Серваке

bulk_insert_buffer_size 8388608
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/local/share/mysql/charsets/
collation_connection utf8_general_ci
collation_database utf8_general_ci
collation_server latin1_swedish_ci


и потом с сервака на другую страницу

на ней

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<meta http-equiv="content-type" content="text/html; charset=windows-1251">

  Ответить  
 
 автор: Trianon   (16.06.2010 в 18:44)   письмо автору
 
   для: Арфей   (16.06.2010 в 18:13)
 

всю мету следует выкинуть нах.
Заголовки выводить явным образом через header/Content-Type либо неявным - через AddDefaultCharset в .htaccess

с какого справочника Вы взяли кодировку cp-1251? Нет такой кодировки. Нет, и не было никогда.

Уж коль скоро система поддерживает utf-8 у Вас, то почему в ней все и не делать?
Путаницы всяко будет меньше.

  Ответить  
 
 автор: вред   (16.06.2010 в 18:50)
 
   для: Trianon   (16.06.2010 в 18:44)
 

> всю мету следует выкинуть нах.

аяйяй, а как же пользователи dial-up, которые сохраняют html на диск и смотрят накаченное в оффлайн?)

  Ответить  
 
 автор: Trianon   (16.06.2010 в 19:07)   письмо автору
 
   для: вред   (16.06.2010 в 18:50)
 

Браузеры при просмотре автономного контента берут данные заголовка из собственной базы кеша.
Если кому спичит сохранять контент на диск диким способом - денвер в лапы.
А кодировка вплющенная в тело документа не дает его спокойно конвертировать без необходимости залезания внутрь, а по сему - зло инконсистентности.

PS. Мне будет удобнее с Вами общаться, если Вы потратите чуть времени, и зарегистрируетесь.

  Ответить  
 
 автор: sms-send   (16.06.2010 в 19:58)   письмо автору
 
   для: Trianon   (16.06.2010 в 19:07)
 

Конвертирование документа без залезания "внутрь" лишает браузер возможности корректно определить в какой кодировке отображать сконвертированный документ. Угадать сможет, определить - нет.

> потратите чуть времени, и зарегистрируетесь.
На зрение не жалуюсь, но вспоминалку паролей тут не нашёл... Пришлось вспоминать головой ))

  Ответить  
 
 автор: Trianon   (16.06.2010 в 21:11)   письмо автору
 
   для: sms-send   (16.06.2010 в 19:58)
 

Хо! Знакомые всё лица!


>Конвертирование документа без залезания "внутрь" лишает браузер возможности корректно определить в какой кодировке отображать сконвертированный документ.

Это с каких таких дел?
Если инконсистентная мета отсутствует - ничего не мешает.

>Угадать сможет, определить - нет.
Зачем гадать? Он возьмет кодировку и тип обычным образом - из поля заголовка.




>
>> потратите чуть времени, и зарегистрируетесь.
>На зрение не жалуюсь, но вспоминалку паролей тут не нашёл... Пришлось вспоминать головой ))

А нетути тут её ... давно уже. Чупса надо дергать для пароля.

  Ответить  
 
 автор: sms-send   (16.06.2010 в 22:47)   письмо автору
958 байт
 
   для: Trianon   (16.06.2010 в 21:11)
 

=)


<meta http-equiv="content-type" ...


http-equiv - буквально "эквивалент поля заголовка протокола http". В html-документе ведь нет самих этих заголовков.

> Он возьмет кодировку и тип обычным образом - из поля заголовка.
Так откуда браузер из локально сохранённого файла воссоздаст http-заголовки, с которыми этот html пришёл? (при отсутствии meta)

В аттаче 4 файла. Опера у меня чудесным алгоритмом угадывает верную кодировку во всех случаях. А вот IE8 и Firefox 3.6.3 спотыкаются минимум на одном из файлов без указанной кодировки.

Сейчас протестировал... При сохранении в режиме "веб-страница с картинками" все 3 браузера добавили в html этот самый инконсистентный тег meta с content-type и текущей отображаемой кодировкой страницы (т.е. если не угадали - то дописывают неправильную кодировку). В режиме "только html" сохраняют весь html без изменений.
Значит в большинстве случаев при сохранении, если meta с кодировкой не было, то добавится тот, который пришёл от сервера, но если файл уже был сохранён локально и без meta, то будем гадать кодировку.

  Ответить  
 
 автор: Trianon   (16.06.2010 в 22:54)   письмо автору
 
   для: sms-send   (16.06.2010 в 22:47)
 

Если локальное хранение выполнено браузером - из базы данных кеша браузера.
Если человеком - меты, прописанной браузером. Хоть это и зло.
Если мету браузер не прописал - из настроек денвера. Которые этот человек также обеспечит.

  Ответить  
 
 автор: sms-send   (16.06.2010 в 23:41)   письмо автору
 
   для: Trianon   (16.06.2010 в 22:54)
 

Ну да, если браузеры всегда при сохранении будут прописывать meta с кодировкой, тогда единственный мой аргумент отпадает и вопросов больше нет :)

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

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