Necesito convertir el codificación de caracteres en algunos archivos de texto creados por una aplicación de terceros en mi MBP Catalina 10.15.6. Estoy en aguas desconocidas aquí, así que por favor indulte mi ignorancia. También, por favor, tenga en cuenta que la aplicación de terceros es no el tema de esta pregunta - entender cómo conciliar los diferentes juegos de caracteres utilizados en MacOS es el tema.
Utilizo una aplicación ( LTspice ) en mi MBP ocasionalmente. También hay una versión para Windows de LTspice. LTspice proporciona una interfaz gráfica de usuario para crear un esquema de circuito, y LTspice crea un archivo de texto plano (extensión .asc) para codificar el esquema y otras directivas y parámetros creados en la interfaz gráfica de usuario de LTspice; este es el archivo que necesito convertir.
Supuse que los archivos .asc no estaban codificados en ASCII, por lo que ejecuté el programa file
utilidad en el .asc
para saber cómo se codificaron:
% file -I '/Users/seamus/Documents/LTspice/Rounding demo-MacMod.asc'
/Users/seamus/Documents/LTspice/Rounding demo-MacMod.asc: application/octet-stream; charset=binary
¡¿Binario?! ... Esto no tiene sentido para mí. Puedo abrir y editar este archivo en TextEdit
. Todos los caracteres son caracteres ASCII reconocibles - lo que entiendo que es un subconjunto de UTF-8 .
Mi siguiente paso fue abrir el archivo en el BBedit
aplicación. Esto reveló nueva información. Según BBedit
El demo-MacMod.asc
archivo reportado por file -I
como binario es en realidad: "UTF-16 Little Endian" formato. Sé que esto es confuso... En un esfuerzo por aclarar, he puesto un par de capturas de pantalla a continuación para ilustrar cómo este archivo se representa en BBedit
y TextEdit
. El byte extra ( ¿ ) en el BBedit
La captura de pantalla es un NUL.
Necesito un método (que pueda automate/script ) para convertir estos "UTF-16 Little Endian" archivos a "US-ASCII" . Pensé que el iconv
herramienta sería perfecta para este trabajo:
iconv -l
...
# long list of character encodings which included:
US-ASCII
UCS-2LE UNICODELITTLE
UCS-2LE UNICODELITTLE
parecía el mejor partido para "UTF-16 Little Endian" pero..:
% iconv -f 'UCS-2LE UNICODELITTLE' -t 'US-ASCII' '/Users/seamus/Documents/LTspice/Rounding demo-MacMod.asc' > '/Users/seamus/Documents/LTspice/Rounding demo-MacMod-iconvASCII.asc'
iconv: conversion from UCS-2LE UNICODELITTLE unsupported
iconv: try 'iconv -l' to get the list of supported encodings
No sé por qué recibo esta respuesta. Claramente iconv -l
dice que UCS-2LE UNICODELITTLE
es compatible. Ya sea el correcto para "UTF-16 Little Endian" es otra cuestión, pero no encuentro nada en la lista que parezca ser mejor.
Esta es la esencia de mi pregunta. Creo que se puede responder de dos maneras:
-
¿Cuál es mi error en el uso de
iconv
o en mi lectura deman iconv
oiconv -l
? -
¿Existe otra opción para convertir "UTF-16 Little Endian" a "US-ASCII" que pueda ser automatizada/secuenciada?
0 votos
Es más correcto describir UTF-8 como un superconjunto de ASCII.