Question

J'ai reçu des fichiers qui, malheureusement, je ne peux pas obtenir des informations sur la façon dont ils ont été générés. Je dois analyser ces fichiers.

Le fichier est entièrement ASCII en plus d'un caractère. 0xDB (en décimal donne 219)

Il est évident que (de regarder le fichier), ce caractère est un symbole monétaire. Je le sais parce que:

  • il est obligatoire pour ces fichiers contiennent un symbole monétaire apparaît là où une quantité
  • il n'y a pas d'autre symbole monétaire (ni $, ni euro, ni rien) nulle part dans les fichiers
  • à chaque fois que 0xDB apparaît il est à côté d'un montant

pense que dans ces fichiers qui 0xDB est censé représenter le symbole Euro (il est en fait très fort probable que cette 0xDB apparaît partout un symbole Euro est censé apparaître).

fichier commande dit ceci au sujet des fichiers:

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

Une hexdump donne ceci:

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

Les fichiers sont tous autrement normalement formatés / analysable. En fait, je reçois toutes les infos bien d'ailleurs pour cette étrange caractère 0xDB.

Quelqu'un sait ce qui se passe? Comment avez en quelque sorte un symbole monétaire (soi-disant le symbole de l'euro) devenir 0xDB?

Il est ni ISO-8859-1 (alias ISO Latin 1) ni ISO-8859-15 car dans les deux cas, le point de code 219 correspond à 'Û' (comme Unicode CodePoint 219 est LETTRE MAJUSCULE LATINE U AVEC CIRCONFLEXE ').

Il est pas étendu ASCII.

Était-ce utile?

La solution

Il pourrait être Mac OS Roman

Autres conseils

de MacRoman . En fait, il doit être - c'est le seul charset dans lequel le signe Euro cartes à 0xDB.

Voici le cartographie complète charset pour MacRoman.

Utilisation du macroman Script , on apprend:

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

Vous pouvez aller dans l'autre sens aussi:

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

Et nous savons que U + 20AC SIGNE EURO est en effet un symbole monétaire en raison de la uniprops la sortie de 'scénario :

$ 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 représente le signe Euro dans le Mac OS caractère romain encodage.

scroll top