Opcionalmente, el objeto Encoding proporciona un preámbulo que es una matriz de bytes que se puede anteponer a la secuencia de bytes resultante del proceso de codificación. Si el preámbulo contiene una marca de orden de bytes (en Unicode, el punto de código U+FEFF), ayudará al descodificador a determinar el orden de bytes y el formato de la transformación o UTF.
La marca de orden de bytes Unicode (BOM) se serializa de la siguiente manera (en hexadecimal):
-
UTF-8: EF BB BF
-
El orden de bytes big endian de UTF-16: FE FF
-
El orden de bytes little endian de UTF-16: FF FE
-
El orden de bytes big endian de UTF-32: 00 00 FE FF
-
El orden de bytes little endian de UTF-32: FF FE 00 00
Se recomienda que use BOM en las aplicaciones, ya que proporciona cierta identificación de una codificación para los archivos que han perdido de otro modo la referencia al objeto Encoding, por ejemplo, datos de web sin etiqueta o incorrectamente etiquetados o archivos de texto aleatorios almacenados cuando un negocio no tenía intereses internacionales u otros datos. A menudo se podrían evitar problemas al usuario si los datos se etiquetan de forma consistente y correcta, preferentemente en UTF-8 o UTF-16.
Para los estándares que proporcionan un tipo de codificación, BOM es redundante en cierto modo. Sin embargo, se puede usar como ayuda para que un servidor envíe el encabezado de codificación correcto. Opcionalmente, se puede usar como reserva por si se pierde la codificación de algún modo.
El uso de BOM tiene ciertos inconvenientes. Por ejemplo, puede resultar difícil saber cómo limitar los campos de la base de datos que usan BOM. La concatenación de archivos también puede ser un problema, por ejemplo, cuando los archivos se combinan de modo que un carácter innecesario queda en medio de los datos. No obstante, a pesar de ciertos inconvenientes, se recomienda encarecidamente usar BOM.
Para obtener más información sobre el orden de bytes y la marca de orden de bytes, vea The Unicode Standard en Unicode home page
Precaución: |
|---|
| Para garantizar la correcta descodificación de los bytes codificados, éstos deben llevar un preámbulo como prefijo en la aplicación. No obstante, la mayoría de las codificaciones no proporcionan un preámbulo. Para garantizar la correcta descodificación de los bytes codificados, debe usar en la aplicación una codificación Unicode (es decir, UTF8Encoding, UnicodeEncoding o UTF32Encoding) con un preámbulo. |