Inspirado por esta pregunta , ¿puedo usar el iconvcomando para generar una salida UTF-16 con una lista de materiales y con especificidad?
El iconvcomando convierte el texto de una codificación a otra.
Por ejemplo:
echo hello | iconv -f ascii -t utf-16
genera una representación UTF-16 de "hello\n".
Los archivos UTF-16 a menudo, pero no siempre, comienzan con una marca de orden de bytes (BOM), que es una codificación de 2 bytes del carácter Unicode U+FEFF. Puede determinar la endianness de un archivo UTF-16 con BOM comprobando si los dos primeros bytes son FE FFo FF FE.
El iconvcomando tiene varias opciones para generar la salida UTF-16:
$ iconv --list | grep -i utf-16
UTF-16//
UTF-16BE//
UTF-16LE//
Este comando:
echo hello | iconv -f ascii -t utf-16be
genera UTF-16 big-endian sin BOM ; parece suponer que si especificó el endianness, no necesita indicarlo en la salida. Del mismo modo, utf-16legenera little-endian UTF-16 sin BOM.
Esta:
echo hello | iconv -f ascii -t utf-16
genera (en mi sistema Ubuntu x86) little-endian UTF-16 con una BOM, pero he visto un informe de un comando similar que genera UTF-16 big-endian con una BOM, incluso en un sistema little-endian.
Siempre puedo usar utf-16beo utf-16ley anteponer la lista de materiales manualmente, pero estoy buscando una solución que solo use el iconvcomando.
Otra solución, si sabes lo que -t utf-16genera endianness , es:
echo hello | iconv -f ascii -t utf-16 | dd conv=swab 2>/dev/null
Lo que me gustaría usar es algo como:
iconv -f ascii -t utf-16bebom # big-endian with BOM
iconv -f ascii -t utf-16lebom # little-endian with BOM
Pero iconvno es compatible con eso.
EDITAR:
¿Alguien con acceso a un sistema Mac OSX x86 puede publicar un comentario que muestre el resultado (copiar y pegar) del siguiente comando?
echo hello | iconv -f ascii -t utf-16 | od -x
iconv, y me pregunto por qué -t utf-16parece dejar el endianness sin especificar.
iconv -f UTF-8 -t UTF-16, ejecutar en un sistema little-endian (MacOS), generando UTF-16 big-endian con una lista de materiales, lo que parece muy extraño.