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

Форум PHP

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

 

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

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

тема: Как узнать тип кодировки, если Вызов общедоступного метода
 
 автор: Valleri   (13.05.2011 в 12:08)   письмо автору
 
 

Допустим

У меня - header('Content-Type: text/html; charset=windows-1251');

А появилось(в AJAX) из-за типа браузера
Вызов общедоступного метода

Вопрос, как определить тип кодировки, что-бы перекодировать.

  Ответить  
 
 автор: cheops   (13.05.2011 в 12:11)   письмо автору
 
   для: Valleri   (13.05.2011 в 12:08)
 

Это UTF-8.

  Ответить  
 
 автор: lightning.say   (13.05.2011 в 12:16)   письмо автору
 
   для: Valleri   (13.05.2011 в 12:08)
 

надпись: "Вызов общедоступного метода"
вид -> кодировка -> Юникод (UTF-8)

  Ответить  
 
 автор: Valleri   (13.05.2011 в 12:21)   письмо автору
 
   для: lightning.say   (13.05.2011 в 12:16)
 

У меня на самом деле стерв

  Ответить  
 
 автор: lightning.say   (13.05.2011 в 12:27)   письмо автору
 
   для: Valleri   (13.05.2011 в 12:21)
 

"стерв"

  Ответить  
 
 автор: Valleri   (13.05.2011 в 12:33)   письмо автору
 
   для: lightning.say   (13.05.2011 в 12:27)
 

Я слово знаю :)
Как узнать тип кодировки?

  Ответить  
 
 автор: lightning.say   (13.05.2011 в 12:36)   письмо автору
 
   для: Valleri   (13.05.2011 в 12:33)
 

а через браузер не можете посмотреть как я выше написал?

  Ответить  
 
 автор: Valleri   (13.05.2011 в 12:42)   письмо автору
 
   для: lightning.say   (13.05.2011 в 12:36)
 

Это ручной способ.
А это форум PHP.
Естественно интересно программа(функция), которая определит

  Ответить  
 
 автор: cheops   (13.05.2011 в 12:50)   письмо автору
 
   для: Valleri   (13.05.2011 в 12:42)
 

Нет, автоматизировать это вряд ли получится (собственно кодировка - это интерпретация, её зачастую не просто определить автоматически). В ряде случаев эта задача вообще не решаема, например легендарная фраза
Hello world!
удовлетворяет множеству кодировок и во всех этих кодировках оно будет отображено правильно, несмотря на то, что последовательность кодируется одними и теми же символами.

  Ответить  
 
 автор: Valleri   (13.05.2011 в 12:55)   письмо автору
 
   для: cheops   (13.05.2011 в 12:50)
 

Нужна функция типа:
Если кодировка знакома - то конвертируем
     далее выполняем задачи
Если кодировка не знакома - то не конвертируем
    далее не выполняем задачи

  Ответить  
 
 автор: cheops   (13.05.2011 в 13:52)   письмо автору
 
   для: Valleri   (13.05.2011 в 12:55)
 

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

  Ответить  
 
 автор: Саня   (13.05.2011 в 14:16)   письмо автору
 
   для: Valleri   (13.05.2011 в 12:08)
 

Есть множество способов автоматического определения кодировки текста, различающиеся надёжностью, сложностью и скоростью. В гугле можно найти тонну информации по этому поводу.

AJAX всегда передаёт данные в UTF-8.

  Ответить  
 
 автор: parczynski   (17.05.2011 в 05:33)   письмо автору
 
   для: Саня   (13.05.2011 в 14:16)
 

>AJAX всегда передаёт данные в UTF-8.

ну не всегда. можно изменить кодировку
http_request.overrideMimeType('text/html; charset=cp1251');

http_request - объект XMLHttpRequest
а в файле который обрабатывает запрос на сервере это еще проще

  Ответить  
 
 автор: Valleri   (17.05.2011 в 10:04)   письмо автору
 
   для: parczynski   (17.05.2011 в 05:33)
 

Он хотел наверное имел ввиду:"AJAX всегда по умолчанию передает данные в UTF-8."

  Ответить  
 
 автор: cheops   (17.05.2011 в 10:14)   письмо автору
 
   для: parczynski   (17.05.2011 в 05:33)
 

Возможно даже Internet Explorer 6 можно заставить это делать, но дело в том, что при отладке скрипта, Internet Explorer 6 если ему что-то не нравится просто не передает данные, либо на сервер, либо обратно и что ему не нравится выяснить никакой возможности нет - он не сообщает об этом. Поэтому на него не тратят время сразу формируя скрипты в UTF-8, там где можно, чтобы потенциальная ошибка, когда забывается посылка дополнительного HTTP-заголовка не снижала надежность системы, которая может быть довольно объемной. В этом плане я соглашусь, что в 95% случаях от AJAX-запросов можно ожидать UTF-8.

  Ответить  
 
 автор: Valleri   (17.05.2011 в 13:45)   письмо автору
 
   для: cheops   (17.05.2011 в 10:14)
 

А если header('Content-Type: text/html; charset=windows-1251'); , на сервере, сразу перекодирвание.
На практике все работает и Internet Explorer 6.
Вот насчет процентов и статистики, это прошлое. Внесут они изменения в браузере, ради конкуренции, обновят его и все, статистика гавкнет и помашет ручкой.
Или какую надстройку вставят и опять тютю.
На мой взгляд жестокая конкуренция только мешает.

  Ответить  
 
 автор: Valleri   (17.05.2011 в 13:48)   письмо автору
 
   для: cheops   (17.05.2011 в 10:14)
 

Два варианта в AJAX.
1. http_request.overrideMimeType('text/html; charset=cp1251');
2. header('Content-Type: text/html; charset=windows-1251'); с перекодировкой на сервере.
Какие недостатки и какие преимущества?

  Ответить  
 
 автор: Добрый кот   (18.05.2011 в 15:45)   письмо автору
 
   для: Valleri   (13.05.2011 в 12:08)
 

http://www.php.su/functions/?mb-detect-encoding

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

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