Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Проблема с сохранением документа в нужной кодировке

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Pavelbeginner
Отправлено: 08 Марта, 2012 - 20:49:35
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




Использую редактор programmer's notepad. Всегда все было хорошо, то есть набирал документ, выбирал кодировку и сохранял документ. Открывал документ - он в той кодировке, в которой сохранял до этого. Сейчас переустановил ОС. Теперь, если в документе есть кириллица, то документ сохраняется в той кодировке, которую укажешь и после открытия документа показывает ту кодировку, в которой сохранял документ. Но, если в документе только латица, то в какой бы кодировке не сохранять документ, после закрытия и снова открытия документа, показывает кодировку ansi. Что за фигня?..
 
 Top
DelphinPRO
Отправлено: 08 Марта, 2012 - 21:03:44
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




я недавно на этом форуме объяснял причину такого поведения. Воспользуйтесь поиском.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Pavelbeginner
Отправлено: 08 Марта, 2012 - 23:52:22
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




Может лучше дайте ссылку на тему? Посмотрите, пожалуйста, в своих сообщениях. Или хотя бы дайте ключевые слова для поиска. Спасибо.
 
 Top
DelphinPRO
Отправлено: 09 Марта, 2012 - 00:38:33
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




Pavelbeginner пишет:
Посмотрите, пожалуйста, в своих сообщениях.


Если подскажете как это сделать на этом форуме, обязательно посмотрю Улыбка
Честно, не нашел такой функции.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Pavelbeginner
Отправлено: 09 Марта, 2012 - 01:42:06
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




DelphinPRO пишет:
Pavelbeginner пишет:
Посмотрите, пожалуйста, в своих сообщениях.


Если подскажете как это сделать на этом форуме, обязательно посмотрю Улыбка
Честно, не нашел такой функции.


Чёрт, я тоже не нашел... Непродуманный форум. Знаю, что врядтли захотите ещё раз объяснить из-за это происходит, но попросить я Вас попрошу... С меня плюс в Вашу карму(хотя врядтли Вас это интересует Улыбка ).
 
 Top
DelphinPRO
Отправлено: 09 Марта, 2012 - 02:03:43
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




речь идет, если я правильно понял, о UTF-8 без BOM? ( Потому что если ваш редактор не опознает кодировку с БОМом, то выкиньте его нафиг Улыбка и заюзайте Notepad++ )

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

Однако веб-разработчики столкнулись с той проблемой, что PHP не умеет правильно обрабатывать эту метку и выводит ее как печатный символ. Пришлось метку удалять. Так появилась "кодировка" "UTF-8 without BOM", которая никакая не отдельная кодировка, на самом деле, а обрезанный utf-8 Улыбка

воот, мы подобрались к сути вопроса.
Как мы знаем, символы в utf-8 могут быть представлены переменным количеством
байтов от 1 до 6. Наиболее редкие "отодвинуты" в конец таблицы и занимают большее количество байт, а вся латинница уместилась в начале, и символы ее занимают по одному байту в полном соответствии с кодами из ANSI.
Именно поэтому вновь открывая файл, сохраненный в utf 8 без BOM, и не имеющий в себе кириллицы, редактор распознает как ANSI. А что ему еще остается, если латинница в обоих кодировках бинарно идентична? Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
Pavelbeginner
Отправлено: 09 Марта, 2012 - 11:41:43
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 882
Дата рег-ции: Март 2010  


Помог: 1 раз(а)




DelphinPRO пишет:
речь идет, если я правильно понял, о UTF-8 без BOM? ( Потому что если ваш редактор не опознает кодировку с БОМом, то выкиньте его нафиг Улыбка и заюзайте Notepad++ )

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

Однако веб-разработчики столкнулись с той проблемой, что PHP не умеет правильно обрабатывать эту метку и выводит ее как печатный символ. Пришлось метку удалять. Так появилась "кодировка" "UTF-8 without BOM", которая никакая не отдельная кодировка, на самом деле, а обрезанный utf-8 Улыбка

воот, мы подобрались к сути вопроса.
Как мы знаем, символы в utf-8 могут быть представлены переменным количеством
байтов от 1 до 6. Наиболее редкие "отодвинуты" в конец таблицы и занимают большее количество байт, а вся латинница уместилась в начале, и символы ее занимают по одному байту в полном соответствии с кодами из ANSI.
Именно поэтому вновь открывая файл, сохраненный в utf 8 без BOM, и не имеющий в себе кириллицы, редактор распознает как ANSI. А что ему еще остается, если латинница в обоих кодировках бинарно идентична? Улыбка


Спасибо за инфу, большую часть знал, вот только думал, что начальные байты или BOM используются для того, чтобы определить направление байтов(слева направо или справа налево), а не для идентификации кодировки.
Только вопрос есть. Почему до переустановки ОС даже, если в файле не было кириллицы, то редактор не тупил?
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Прочее »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB