В какой кодировке 0xDB является символом валюты? - PullRequest
4 голосов
/ 30 января 2011

Я получил файлы, которые, к сожалению, я не могу получить информацию о том, как они были созданы.Мне нужно проанализировать эти файлы.

Файл полностью ASCII, кроме одного символа: 0xDB (в десятичном виде он дает 219).

Очевидно (при просмотре файла) этот символ являетсясимвол валюты.Я знаю это, потому что:

  • обязательно, чтобы эти файлы содержали символ валюты везде, где появляется сумма
  • нет другого символа валюты (ни $, ни евро, ни ничего) нигде вфайлы
  • каждый раз, когда 0xDB появляется рядом с количеством

I думаю , что в этих файлах 0xDB должен представлять символ евро (этона самом деле очень вероятно, что этот 0xDB появляется везде, где должен появляться символ евро).

Команда file говорит это о файлах:

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

An 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 равна 'LATIN CAPCITAL LETTER U WITH CIRCUMFLEX' ).

Это не расширенный-ASCII.

Ответы [ 4 ]

7 голосов
/ 30 января 2011

Это может быть Mac OS Roman

4 голосов
/ 30 января 2011
2 голосов
/ 30 января 2011

Используя macroman script , каждый изучает:

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

Вы можете пойти и другим путем:

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

И мы знаем, что знак евро U + 20AC действительно является символом валюты из-за 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
1 голос
/ 30 января 2011

0xDB представляет знак евро в кодировке Mac OS Roman .

...