Николай М.
1895 сообщений
#14 лет назад
Баг нашелся, в общем если сделать

include('utf8filewithbom.html';

в такой связке, при том что этот файл содержыт BOM заголовок, то все что юникодное засипёт знаками вопроса!!!

На 5.3.1 все ок, будьте бдительны, час модохался чтобы понять в чем проблема.

Вопрос: как все-таки корректно принклудить файл с BOM-ом в 5.2.1 ?
Николай М.
1895 сообщений
#14 лет назад
И еще вопрос назрел, есть поддомен, хочу из него грузить исключительно статику (чтобы браузер понимал что это статика, что кешировать все там надо и т.д.) но вот потерлся гдето топик про это дело, кто скажет есть ли в этом смысл, и как это правильно делается?
Максим Ф.
3195 сообщений
#14 лет назад
Зачем делать с BOM? Notepad++ -> кодировки -> utf-8 без BOM (и заодно все файлы конвертировать в нормальный формат).
Николай М.
1895 сообщений
#14 лет назад
Цитата ("AlekartRu"):
нормальный формат
:o
О горе мне... С каких это пор файл записанный в UTF-8 без BOM-ка является нормальным?
Вы хоть в курсе что такое BOM, что такое UTF-8 и для чего это все надо?

Это сугубо бага тупого ПХП, потому что он не умеет работать с UTF-8 файлами, браузеры все причем умеют, проверить очень просто, делаю html-ку в UTF-8 кодировке с БОМ-ком конечно, как и должно быть, заливаю на сервак (апач, гникс.. неважно оба работают нормально) и запрашиваю файл, - он приходит в нормальном виде, с точной кодировкой, тоесть БОМ-ок тоже передается и обрабатывается!

Если сделать тоже но через ПХП, тоесть сделать include такого файла, то получим знаки вопроса там где не ANSI текст (ПХП версии 5.2).

Так что это ПХП не нормальный, а БОМ-ок нужен.

Еще причина делать с БОМ-ком - все программы, которые разработаны под юникод и под UTF-8 умеют распознавать эти форматы, именно по БОМ-ку, напр. фар подумает что это ASNI-файл, блокнот вообще по рандому когда как, браузер попробует определить кодировку сам в таком случаи, но почти всегда также будет принимать файл за ANSI.
Сергей Шпак
596 сообщений
#14 лет назад
MMM_Corp, кодировку пхп-шного файла в который инклудится файл смотрели ?
Николай М.
1895 сообщений
#14 лет назад
OEM - кодировка, файл: protected\views\layouts\main.php, это с YII фрейиворка, работаю в NetBeans-се самом свежем.

Там кстати тоже был прикол с кодировкой, пришлось писать:
header("Content-type:text/html;charset=utf-8");
- это исправило крякозябры в меню: , видите там большая таблица - она инклудится, прикол в том что если в инклуде есть БОМ-ок, то хоть присрелись... будут знаки вопроса, пхп внешный файл никак не влияет, все указывает на неправельный инклуд, если же html-ка: (без БОМ-ка) , то все нормально. Правда прышол к этому решению методом тыка). ПХП 5.3 нормально инклудит с БОМ-ком, вот такой вот прикол.
Артём К.
1157 сообщений
#14 лет назад
Цитата ("MMM_Corp"):
О горе мне... С каких это пор файл записанный в UTF-8 без BOM-ка является нормальным?


Это давно известный глюк php.
Сталкивался с таким багом. Самое лучшее решение - убрать BOM из всех файлов.
Себастьян Ф.
584 сообщения
#14 лет назад
Цитата:
For example in PHP, if output buffering is disabled, it has the subtle effect of causing the page to start being sent to the browser, preventing custom headers from being specified by the PHP script.




Ну, а вообще, не нужен BOM в UTF-8. Вы же делаете для php, а не для блокнота и фара..

Оффтопик
Хотя может, заказчик распознает только с BOM, тогда да, надо обязательно его юзать..
Николай М.
1895 сообщений
#14 лет назад
Это проблема исключительно тупого ПХП-интерпретатора, который упрямо застрял в прошлом, что с него взять — одни проблемы и затычки. БОМ нужен хотя бы для того чтобы дамп мускула переносился нормально без плясок, нужен чтобы пхп-файлы были совместимыми с редакторами. Весь мир уже давно переехал на юникод, винда с выходом 4 NT виндов (это уже около 12 лет), кроме консолы, которая до сих пор на OEM живёт.))) Все СУБД уже давно работают с юникодом, в никсах также все ок с этим делом, все перешли... Один троль - пхп остался наверное, ООП только в 5 версии появился, это же просто кашмар, интересно сколько лет ждать вменяемого ООП и юникода в пхп?)
Андрей К.
1172 сообщения
#14 лет назад
"Не нравится - не ешь" (с)
Для utf8 BOM не нужен, для переноса дампов мускула надо пользоваться мускулом, а не плясать с кодировками и php. Но основных функций по работе с юникодом конечно не хватает. mb_ не в счет.
Николай М.
1895 сообщений
#14 лет назад
Цитата ("Lisio"):
Для utf8 BOM не нужен

Cогласно:

UTF-8 
EF BB BF


Ну то что ПХП не определяет его, это только значит что он не следует стандартам.
Алексей Л.
49 сообщений
#14 лет назад
> Cогласно: ...
А если чуть выше прочитать?
Цитата:
Также он иногда применяется для обозначения формата UTF-8, хотя к этому формату и неприменимо понятие порядка байтов.


К слову, PHP воспринимает BOM как символ и просто выводит его. Я вообще к тому, что эта "бага" всегда была - сохраняйте файлы без BOM (тем более для UTF-8 смысла в BOM нет) и никаких проблем не будет.
Игорь О.
1 сообщение
#14 лет назад
А как бороться потом, например, с тем, что редакторы не узнают UTF без бома? В частности, популярный php expert editor, пока не вставишь бом, будет определять как анси.
Евгений Б.
5330 сообщений
#14 лет назад
Цитата ("MMM_Corp"):
И еще вопрос назрел, есть поддомен, хочу из него грузить исключительно статику (чтобы браузер понимал что это статика, что кешировать все там надо и т.д.) но вот потерлся гдето топик про это дело, кто скажет есть ли в этом смысл, и как это правильно делается?

Нафига?? нгинкс на фронт, выставить для нужных файлов отдачу статики, выставить заголовки для браузера на кэширование на пару суток.

А вообще идеально завести доменов штук 10.. ww1.xxx.ru ww2.xx.ru и т.д... и после анализа диаграммы загрузки соседние картинки распихать по разным поддоменам.
Николай М.
1895 сообщений
#14 лет назад
BOM, нужен чтобы определить что это файл в кодировке UTF-8, даже дурацкый блокнот знает что это такое, и смысл внем какраз чтобы определить кодировку, так что смысл есть, причем весьма большой
Николай М.
1895 сообщений
#14 лет назад
Цитата ("ArtPro"):
Цитата ("MMM_Corp"):
И еще вопрос назрел, есть поддомен, хочу из него грузить исключительно статику (чтобы браузер понимал что это статика, что кешировать все там надо и т.д.) но вот потерлся гдето топик про это дело, кто скажет есть ли в этом смысл, и как это правильно делается?

Нафига?? нгинкс на фронт, выставить для нужных файлов отдачу статики, выставить заголовки для браузера на кэширование на пару суток.

А вообще идеально завести доменов штук 10.. ww1.xxx.ru ww2.xx.ru и т.д... и после анализа диаграммы загрузки соседние картинки распихать по разным поддоменам.


Так и сделал, есть основной домен:
Сделал поддомен: , тут будут хранится картинки, и css-файлы, кешированием занимается ngix, хотя и этого многовато))), пока кеширует и сжимает само на сутку, этого достаточно, чтобы с старници 450 кб, сделать 19 кб, с статикой в кеше, вроде нормально)
Евгений Б.
5330 сообщений
#14 лет назад
Цитата ("MMM_Corp"):
тут будут хранится картинки, и css-файлы, кешированием занимается ngix, хотя и этого многовато))),

1. nginx не кэширует - это проксирующий сервер.
2. если отдельный домен и отдельная папка то это хорошо, но я домены не для этого советую делать Мои аргументы связаны с числом потоков загрузки в браузерах.
В Вашем конфиге пользы от отдельного домена нет.