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

Разное

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

 

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

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

тема: Загадки utf-8
 
 автор: Владимир55   (07.03.2010 в 14:41)   письмо автору
339 байт
 
 

Пытаясь использовать utf-8, я встретился с удивительными проблемами: страницы, содержащие совершенно одинаковый код, ведут себя по разному!

Сервер отдает в заголовке кодировку utf-8.

При этом файл, приведенный в Приложении, нормально работает.

  Ответить  
 
 автор: Владимир55   (07.03.2010 в 14:42)   письмо автору
308 байт
 
   для: Владимир55   (07.03.2010 в 14:41)
 

А вот этот файл, содержащий точно такой же код (перенесен мышкой), не работает!

  Ответить  
 
 автор: Владимир55   (07.03.2010 в 14:48)   письмо автору
 
   для: Владимир55   (07.03.2010 в 14:42)
 

Разобрался - в одном из них перед кодом есть нечитаемые знаки...

  Ответить  
 
 автор: exp   (07.03.2010 в 15:19)   письмо автору
 
   для: Владимир55   (07.03.2010 в 14:48)
 

в первом из файлов русские буквы в кодировке utf-8 , она-же cp65001
во втором в кодировке cp1251
нечитаемые символы (BOM), есть как-раз у того файла в котором наоборот 1251, поэтому многие текстовые редактороры найдя BOM сразу-же интерпритируют символы там как utf-8, хоть это и не так.

  Ответить  
 
 автор: Владимир55   (07.03.2010 в 15:41)   письмо автору
 
   для: exp   (07.03.2010 в 15:19)
 

Никак я не могу разобраться в этом винегрете!

Как же должно быть для нормальной работы?

Как создать скриптом правильный файл в кодировке utf-8 ?

  Ответить  
 
 автор: Владимир55   (07.03.2010 в 16:10)   письмо автору
 
   для: Владимир55   (07.03.2010 в 15:41)
 

Когда я смотрю файл через WinHex, то в неработающем файле вижу кириллицу, а в работающем кракозябры. И это вполне согласуется с тем, как я понимал проявления различий в кодировке.

ВОМ, если он имеется в работающем файле, вполне можно удалить, и от этого его работоспособность не теряется.

Осталось только понять, как же надлежащим образом "запихнуть" в файл текст, что бы он на уровне кодов был в utf-8?

  Ответить  
 
 автор: Владимир55   (07.03.2010 в 16:26)   письмо автору
 
   для: Владимир55   (07.03.2010 в 16:10)
 

    $text = iconv('cp1251', 'utf-8', 'Кириллический текст');
    file_put_contents('10.txt', $text);


Оказывается, если в файл записать кириллический текст в кодировке 'utf-8', то редактор (блокнот) показывает его как кириллицу, а на уровне бинарных кодов он в кракозябрах 'utf-8'.

Теперь понятно, в чем тут фокус!

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

Я к AkelPad просто привык, установил его себе как замену стандартному блокноту и его в тоталКомандере по F4 открываю , если в каком-нибудь файле сомневаюсь, да и редактировать иногда можно неплохо.
Часто может безошибочно сам определять кодировку, или можно её менять как угодно, убирать/добавлять BOM

А так в notepad++ всётаки чаще пишу, там хоть таких тонкостей с кодировками нет, многие вообще не поддерживает, но зато hex можно посмотреть, и подсветка удобнее.
//кстати даже эти два блокнота по разному записывают некоторые многобайтные кодировки.

Бывает просто в браузере принудительно кодировки переключаю.

//upd забыл предупредить :)
плагины в AkelPad есть и такие которые будет полезно включать только когда нужно, у меня включено только три
HightLight Lineboard ToolBar

  Ответить  
 
 автор: Владимир55   (08.03.2010 в 10:59)   письмо автору
 
   для: exp   (07.03.2010 в 17:27)
 

Абсолютно бесполезное и при этом морочное дело - кодировка utf-8.

При отсутствии Аякса никогда ее применять не буду.

  Ответить  
 
 автор: exp   (08.03.2010 в 11:55)   письмо автору
 
   для: Владимир55   (08.03.2010 в 10:59)
 

это смотря для чего ещё кроме аякс.
Например попадается текст в koi8-r, с какими-нибудь рамочками полосочками и закрашиваниями , другой текст в cp866 с такими-же красивостями, третий в cp1251. четвёртый вообще в какой-нибудь ISO-8859-5,
к одной однобайтной кодировке привести не сможете не потеряв часть символов или не или не заменяя какими-нибудь &code;
Или видели как здесь на немецком языке пытались спамить ? :) в cp1251 просто было заменено на русские буквы то что в ней не оказалось. иногда вообще показывает ΩΑ и не факт что в системе пользователей вообще установлены такие шрифты и кодировки как cp1251, utf-8 есть у большего колличества

  Ответить  
 
 автор: Trianon   (08.03.2010 в 18:02)   письмо автору
 
   для: Владимир55   (08.03.2010 в 10:59)
 

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

  Ответить  
 
 автор: Владимир55   (08.03.2010 в 18:24)   письмо автору
 
   для: Trianon   (08.03.2010 в 18:02)
 

М-да...

Я уже зарекался от использования базы данных.
А теперь не могу сделать без неё ни одного скрипта!

  Ответить  
 
 автор: mihdan   (09.03.2010 в 18:29)   письмо автору
 
   для: Владимир55   (08.03.2010 в 10:59)
 

А как же многоязычные приложения? Или китайский язык тоже будете хранить в кодировке windows-1251?

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

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