2014-04-24 5 views
7

Ho creato un file con codifica UTF-8, ma non capisco le regole per la dimensione che occupa su disco. Ecco la mia ricerca completa:Dimensioni file nella codifica UTF-8?

  1. Per prima cosa ho creato il file con una sola lettera hindi 'क' e la dimensione del file in Windows 7 è stato
    8 byte.

  2. Ora con due lettere "कक" e la dimensione del file era di 11 byte.

  3. Ora con tre lettere "ककक" e la dimensione del file era 14 byte.

Qualcuno può spiegarmi perché mostra tali dimensioni?

risposta

7

I primi tre byte vengono utilizzati per BOM (Byte Order Mark)EF BB BF.

Quindi i byte E0 A4 95 codificano la lettera क.

Quindi i byte 0D 0A codificano un ritorno a capo.

Totale: 8 byte. Per ogni lettera क che aggiungi, hai bisogno di altri tre byte.

+0

BOM è completamente ridondante nei file UTF-8 (l'ordine dei byte è specificato in modo completo e non ambiguo, a differenza di UTF-16LE rispetto a UTF-16BE), ma sembra che alcuni strumenti di Windows insistano a inserirne uno comunque. Forse passare a uno strumento diverso o una piattaforma migliore. – tripleee

+1

@ triple: Il consorzio Unicode dichiara che "l'uso di una distinta base non è né richiesto né consigliato per UTF-8" ([p.36] (http://www.unicode.org/versions/Unicode5.0.0/ch02.pdf)), ma può essere utile, ad esempio per gli editor che devono gestire diverse codifiche. Poiché UTF-8 è retrocompatibile con ASCII, può accadere che un file UTF-8 non contenga caratteri sopra '0x7f', quindi gli editor che eseguono la scansione dei primi 64 KB di un file per indovinarne la codifica (ad esempio cosa fa EditPad), potrebbe essere ingannato. –

+1

Non direi COMPLETAMENTE ridondante .. indica in modo inequivocabile che il file è codificato in UTF-8. – Flynn1179

Problemi correlati