UTF-8 и UTF-8 (без BOM)

12 3
mff
На сайте с 21.02.2008
Offline
266
mff
2800

Здравствуйте!

Вчера заказал новый дорогой хостинг для своих проектов. Впервые столкнулся с такой жуткой проблемой кодировки, целый день убил. Благо, грамотные и отзывчивые люди с суппорта подсказали, что у меня кодировка файлов в UTF-8, а нужно было сохранять в UTF-8 (без BOM) :smoke:

А вот и вопрос, чем же эти 2 кодировки отличаются? :)

Спасибо!

T.R.O.N
На сайте с 18.05.2004
Offline
314
#1

UTF-8 без BOM это кодировка, в которой каждому символу соответствует 1 байт (специально для тех, кто выхватывает куски - речь только о ЛАТИНИЦЕ).

- просто UTF8 (UTF16 UTF32) (Byte Order Mark (метка порядка следования байтов)) тоже самое только в начале файла идут символы ef bb bf (в HEX)

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
[Удален]
#2

mff, во первых - одна кодировка, а не две :)

во вторых - совсем небольшое отличие структуры файла, если файл сохранен в режиме utf-8(с BOM), то он выглядит как 3 байта, индентифицирующие utf кодировку файла, которые и называются "BOM запись" (bom = byte order mask), для utf-8, utf-16, utf-32 разные бом записи, поэтому это может создать проблему при их "распознавании", а если вы знаете в какой у вас кодировке файл, то эти 3 байта можно опустить и записать просто один "текст" - режим utf-8(без bom)

http://en.wikipedia.org/wiki/Byte-order_mark тут можно почитать о BOM

вот кстати эти 3 байта для ютф8: EF BB BF

bearman добавил 17.05.2010 в 15:42

T.R.O.N:
UTF-8 без BOM это кодировка, в которой каждому символу соответствует 1 байт

реально?) если да, то я лох раз думал что это просто "метка"

T.R.O.N
На сайте с 18.05.2004
Offline
314
#3
bearman:
реально?) если да, то я лох раз думал что это просто "метка"

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

mff
На сайте с 21.02.2008
Offline
266
mff
#4

Спасибо ребят, всё предельно ясно теперь! T.R.O.N, отдельное спасибо! Не раз выручайте с моими глупыми вопросами. 🍻

[Удален]
#5

T.R.O.N, то есть при бом, латиница будет кодироваться двумя байтами?))

http://en.wikipedia.org/wiki/UTF-8#Description

сейчас проверю)

T.R.O.N
На сайте с 18.05.2004
Offline
314
#6
bearman:
латиница будет кодироваться двумя байтами?))

ну хватит детского сада... или для Вас открытие, что для многих осилить вычитание лишних 3-х байтов, это как полет на Луну?

[Удален]
#7
я¬¬here was a example of utf file with BOM

сохранил в notepad++ в режиме utf8+ bom

и открыл в редакторе от winrar'а

не вижу двух байт :)

а вот если сохранить такой же текст в utf-16, то да, будет 2 байта на символ латиницы (даже) если я не путаю с utf-32, при работе с пхп редко с такими кодировками приходится общаться, поэтому по памяти говорю :)

bearman добавил 17.05.2010 в 16:10

T.R.O.N:
UTF-8 без BOM это кодировка, в которой каждому символу соответствует 1 байт.

так это бред)

utf-8 и utf-8+bom ничем не отличаются, кроме этих 3 байт, ты с этим согласен? или я стар, глуп и туп стал и не понимаю что эти вещи различаются не только 3 байтами?

utf-8 - байтопеременная кодировка, от 1 до 4 байт в зависимости от кодируемого символа, бом на это свойство никак не влияет

T.R.O.N
На сайте с 18.05.2004
Offline
314
#8
bearman:
utf-8 и utf-8+bom ничем не отличаются, кроме этих 3 байт

а где и кто утверждал обратное? читайте по буквам а не между строк... придравшис к своим умозаключениям, Вы все время забываете о сути

dkameleon
На сайте с 09.12.2005
Offline
386
#9
bearman:
или я стар

Суперстар! :)

Трон просто глупость сморозил и теперь отмазывается :))

Дизайн интерьера (http://balabukha.com/)
T.R.O.N
На сайте с 18.05.2004
Offline
314
#10
dkameleon:
Трон просто глупость сморози

готов указать где имеено глупость?

12 3

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий