4

残念ながら、ファイルがどのように生成されたかについての情報を取得できないファイルを受け取りました。これらのファイルを解析する必要があります。

ファイルは、1文字を除いて完全にASCIIです:0xDB(10進数で219になります)。

明らかに(ファイルを見ると)この文字は通貨記号です。私はそれを知っています:

  • これらのファイルには、金額が表示される場所に通貨記号を含める必要があります
  • ファイルのどこにも他の通貨記号($でもユーロでも何もない)もありません
  • その0xDBが表示されるたびに、金額の横になります

これらのファイルでは、0xDBがユーロ記号を表すことになっていると思います(実際には、この0xDBがユーロ記号が表示されるはずのすべての場所に表示される可能性が非常に高くなります)。

fileコマンドは、ファイルについて次のように記述します。

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

hexdumpはこれを与えます:

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

それ以外の場合、ファイルはすべて通常どおりフォーマット/解析可能です。実際、私はその奇妙な0xDB文字以外のすべての情報をうまく取得しています。

誰かが何が起こっているのか知っていますか?通貨記号(おそらくユーロ記号)はどのようにして0xDBになりましたか?

ISO-8859-1(別名ISO Latin 1)でもISO-8859-15でもありません。どちらの場合も、コードポイント219は「Û」に対応するためです(Unicodeコードポイント219が「LATINCAPITAL LETTER U WITH CIRCUMFLEX」であるのと同じです)。

拡張ASCIIではありません。

4

4 に答える 4

7

それはMac OS Romanかもしれません

于 2011-01-30T17:13:13.633 に答える
4

マクロマンです。実際、そうである必要があります。これは、ユーロ記号が 0xDB にマップされる唯一の文字セットです。

MacRomanの完全な文字セット マッピングは次のとおりです。

于 2011-01-30T17:17:07.720 に答える
2

マクロマンスクリプトを使用すると、次のことがわかります。

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

他の方法もできます。

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

また、 unipropsスクリプトの出力により、U+20AC EURO SIGN が実際に通貨記号であることがわかります。

$ uniprops -a U+20AC
U+20AC <€&gt; \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
于 2011-01-30T18:59:33.537 に答える
1

0xDB は、Mac OS Roman文字エンコーディングのユーロ記号を表します。

于 2011-01-30T17:13:42.887 に答える