Pregunta

Recibí archivos que, lamentablemente, no puedo obtener información sobre cómo se generaron. Necesito analizar estos archivos.

El archivo es completamente ASCII además de un carácter: 0xDB (en decimal da 219).

Obviamente (mirando el archivo) este carácter es un símbolo de moneda. Lo sé porque:

  • es obligatorio que estos archivos contengan un símbolo de moneda en cualquier lugar donde aparezca una cantidad
  • no hay otro símbolo de moneda (ni $ ni euro ni nada) en ninguna parte de los archivos
  • cada vez que aparece 0xDB, aparece junto a una cantidad

Creo que en estos archivos se supone que 0xDB representa el símbolo del euro (en realidad, es muy probable que este 0xDB aparezca en todos los lugares donde se supone que aparece un símbolo del euro).

El comando archivo dice esto sobre los archivos:

ISO-8859 English text, with CRLF, LF line terminators

Un hexdump da esto:

00000030  71 75 61 6e 74 20 db 32  2e 36 30 0a 20 41 49 4d  |quant .2.60. AIM|
                            ^^                                     ^

Los archivos son todos normalmente formateados / analizables. De hecho, estoy recibiendo toda la información muy bien además de ese extraño carácter 0xDB.

¿Alguien sabe qué está pasando? ¿Cómo se convirtió un símbolo de moneda (supuestamente el símbolo del euro) en un 0xDB?

No es ISO-8859-1 (también conocido como ISO Latin 1) ni ISO-8859-15 porque en ambos casos el punto de código 219 corresponde a 'Û' (al igual que el punto de código Unicode 219 es 'LETRA U MAYÚSCULA LATINA CON CIRCUMFLEX ').

No es ASCII extendido.

¿Fue útil?

Solución

Podría ser Mac OS Roman

Otros consejos

Usando el macroman script , uno aprende:

$ macroman 0xDB
MacRoman DB  ⇒  U+20AC  ‹€›  \N{ EURO SIGN }

También puede ir al revés:

$ macroman U+00E9
MacRoman 8E  ⇐  U+00E9  ‹é›  \N{ LATIN SMALL LETTER E WITH ACUTE }

Y sabemos que U + 20AC EURO SIGN es de hecho un símbolo de moneda debido a los uniprops script :

$ uniprops -a U+20AC
U+20AC <€> \N{ EURO SIGN }:
    \pS \p{Sc}
    All Any Assigned InCurrencySymbols Common Zyyy Currency_Symbol Sc Currency_Symbols S Gr_Base Grapheme_Base Graph GrBase Print Symbol X_POSIX_Graph X_POSIX_Print
    Age=2.1 Bidi_Class=ET Bidi_Class=European_Terminator BC=ET Block=Currency_Symbols Canonical_Combining_Class=0 Canonical_Combining_Class=Not_Reordered CCC=NR Canonical_Combining_Class=NR Script=Common Decomposition_Type=None DT=None East_Asian_Width=A East_Asian_Width=Ambiguous EA=A Grapheme_Cluster_Break=Other GCB=XX Grapheme_Cluster_Break=XX Hangul_Syllable_Type=NA Hangul_Syllable_Type=Not_Applicable HST=NA Joining_Group=No_Joining_Group JG=NoJoiningGroup Joining_Type=Non_Joining JT=U Joining_Type=U Line_Break=PR Line_Break=Prefix_Numeric LB=PR Numeric_Type=None NT=None Numeric_Value=NaN NV=NaN Present_In=2.1 IN=2.1 Present_In=3.0 IN=3.0 Present_In=3.1 IN=3.1 Present_In=3.2 IN=3.2 Present_In=4.0 IN=4.0 Present_In=4.1 IN=4.1 Present_In=5.0 IN=5.0 Present_In=5.1 IN=5.1 Present_In=5.2 IN=5.2 Present_In=6.0 IN=6.0 SC=Zyyy Script=Zyyy Sentence_Break=Other SB=XX Sentence_Break=XX Word_Break=Other WB=XX Word_Break=XX _X_Begin

0xDB representa el signo del euro en la codificación de caracteres Mac OS Roman .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top