La codificación (BOM) de UTF-8 (marca de orden de bytes) es una secuencia de bytes colocada al comienzo de una secuencia de texto que permite al lector adivinar de manera más confiable que un archivo está codificado en UTF-8. Normalmente, la codificación se utiliza para señalar la endianidad de la codificación, pero dado que la endianidad es irrelevante para UTF-8, el BOM es innecesario. Sin embargo, habrá algunos casos en los que algunos clientes requerirán que los archivos de texto se abran en los editores de texto predeterminados con la codificación mencionada. Por ejemplo, puedes determinar si un archivo .txt tiene BOM si lo abres con Visual Studio Code:
En el área inferior, verás que la codificación predeterminada utilizada para leer el archivo es UTF-8 con BOM y el editor se pudo determinar la codificación a partir de su contenido.
En este tutorial, te explicaré cómo escribir un archivo con la codificación mencionada en Node.js.
Archivo con codificación UTF-8BOM
Todo lo que necesita hacer para agregar BOM a un archivo escrito con UTF-8 es anteponer \ufeff
al contenido. El siguiente ejemplo escribirá 2 archivos usando el sistema de archivos predeterminado de Node.js, uno tendrá el UTF-8 predeterminado y el otro UTF-8 con BOM:
// Importar sistema de archivos
const fs = require('fs');
// Contenido regular del archivo
let fileContent = "Hello World!";
// La ruta absoluta del nuevo archivo con su nombre
let filepathUTF8 = "./utf8_file.txt";
let filepathUTF8WithBOM = "./utf8bom_file.txt";
// 1. Escribir un archivo con UTF-8
fs.writeFile(filepathUTF8, fileContent, (err) => {
if (err) throw err;
console.log("¡El archivo se guardó correctamente con UTF-8!");
});
// 2. Escribir un archivo con UTF-8 con BOM
// Tenga en cuenta que antepone \ ufeff al contenido que se escribirá
fs.writeFile(filepathUTF8WithBOM, "\ufeff" + fileContent, (err) => {
if (err) throw err;
console.log("¡El archivo se guardó correctamente con UTF-8 con BOM!");
});
Que te diviertas ❤️!
Conviertete en un programador más sociable