テキスト文書のUnicodeエンコーディングを確認する方法

テキスト文書のUnicodeエンコーディングを確認する方法

特定のエンコーディングのテキスト文書または文字列です。UTF-8、私が見ている文字を表すUnicodeエンコーディングを見つける最も簡単な方法は何ですか?

特に、Á(ラテン文字)やA(キリル文字)など、ほぼ同じ文字にどのコードポイントが使用されるのかを知りたいです。また、UTF-8に変換する方法も知りたいです。たとえば、エディタで作業する方法を好むkateが、コマンドラインの代替案も許可されます。

私が試したこと

テキストを実行してみましたが、od -xcあまり役に立たないことに気づきました。UTF-8エンコーディングバイト間のビットを並べ替えます。次のケーススタディは、キリルのコレクションを強調する状況がどれほど難しいかを示しています。

切り取りと貼り付けに便利なUnicode文字が多く含まれるテキスト文書を使用しますが、この形式が一般的な形式よりも便利だと思います。キャラクターマップkateそのようなファイルのエンコーディングを確認したいので、エディタのオプションが役に立ちます。

私は何を望んでいますか?

VMSでプログラム可能なエディタTPUを使用すると、ファイルバイトの垂直方向に整列された16進コード(適切なタブ間隔を含む)を表示するテキスト行の下に2つの追加行を表示する機能を追加するように簡単にプログラムできます。 UTF-8には最大8行が必要ですが、これは便利な可能性です。

別の可能性は、文字を選択してその文字を生成するために使用されたコードポイントおよび/またはそのコードポイントをUTF-8を介してバイトに変換する方法を示すウィンドウをポップアップする機能を持つことです。この場合、より多くの情報を表示できますが、長いテキストの詳細を視覚的に取得するのには役立ちません。

エディタの機能の代わりに、新しい形式またはそのod派生形式を使用できます。

ケーススタディ:ロシア語のアクセントのコレクション

私は現在ロシア語を学んでいますが、キリル文字にアクセントのある文字を入力したいと思います。アクセント付きのロシア語コレクションを収集しました(例:ポポルガイ)、次の文字を送ってください。

Á á Ó ó É é У́ ý И́ и́ Ы́ ы́ Э́ э́ Ю́ ю́ Я́ я́

私から集めたこの回答以下の質問1の場合、これらの強調コレクションはを使用して表現する必要がありますU+0301 COMBINING ACUTE ACCENT。このプログラムを実行するとod -tx1 -tc -w26-tcしたがって、スペース、幅26がこのサイトに適しています)、私が得るものは次のとおりです。

0000000  c3  81  20  c3  a1  20  c3  93  20  c3  b3  20  c3  89  20  c3  a9  20  d0  a3  cc  81  20  c3  bd  20
        303 201     303 241     303 223     303 263     303 211     303 251     320 243 314 201     303 275    
0000032  d0  98  cc  81  20  d0  b8  cc  81  20  d0  ab  cc  81  20  d1  8b  cc  81  20  d0  ad  cc  81  20  d1
        320 230 314 201     320 270 314 201     320 253 314 201     321 213 314 201     320 255 314 201     321
0000064  8d  cc  81  20  d0  ae  cc  81  20  d1  8e  cc  81  20  d0  af  cc  81  20  d1  8f  cc  81  0a
        215 314 201     320 256 314 201     321 216 314 201     320 257 314 201     321 217 314 201

Kate私のファイルがUTF-8形式であることを伝えます(下記Tools Encoding Unicode)。 UTF-8は、U + 0080 ... U + 07FFの範囲にあるキリル文字との組み合わせのアクセントを表します(これらのコードポイントの場合は2バイト)。最下位 11 ビットは、この 2 バイトに110xxxxx2 10xxxxxx2と表示されます。1&0が指定され、xコードポイントで 1 ビットです。つまり、

  • 最初のバイト = 0xc0+X
  • 2番目のバイト= 0x80+ワイ、どこ
  • Xそしてワイコードポイントを2 6 =で割ったときの商と残り0x40、つまり上位10ビット(5個は0ではない)と下位6ビットです。

結合された急性記号のコードポイントはU + 0301なので、対応するビットの0011 00 00 0001意味はX=0x0cワイ=0x01なのでバイトで表示されます0xcc 0x81。同様に、

キリル文字「Á」→U+0410 0100 00 01 0000→→→ 0x10 0x10。キリル 文字「a」→U+0430 →→→ 。0xd0 0x90
0100 00 11 00000x10 0x200xd0 0xb0

これはダンプ出力と一致しませんが、

ラテン語「Á」→U+ 00C1 0000 11 00 0001→→→ 0x03 0x010xc3 0x81

だから私が保存したのはÁ á Ó ó É é実際にラテン語です。 6個とも2バイトのみ使用するのでアクセントを組み合わせる必要はありません!


ノート

1私が いました。KDEでアクセント付きのロシア語の文字を入力するには?。その答えを聞いて、私はこの質問で説明されている機能が欲しいことに気づきました。

ベストアンサー1

Emacs

C-x =( M-x what-cursor-position)たとえば、画面の下部に現在の文字に関するコードポイント情報を表示します。

Char: И (1048, #o2030, #x418, file ...) point=7 of 8 (75%) column=0

C-u C-x =コードポイント、バイト表現、Unicode文字のメタデータ、文字を表示するために使用されるフォントなどを含む追加情報を含むウィンドウを開きます。

             position: 7 of 8 (75%), column: 0
            character: И (displayed as И) (codepoint 1048, #o2030, #x418)
    preferred charset: unicode (Unicode (ISO10646))
code point in charset: 0x0418
               script: cyrillic
               syntax: w    which means: word
             category: .:Base, L:Left-to-right (strong), Y:2-byte Cyrillic, c:Chinese, h:Korean, j:Japanese, y:Cyrillic
             to input: type "C-x 8 RET HEX-CODEPOINT" or "C-x 8 RET NAME"
          buffer code: #xD0 #x98
            file code: #xD0 #x98 (encoded by coding system utf-8-unix)
              display: by this font (glyph code)
    xft:-DAMA-Ubuntu Mono-normal-normal-normal-*-17-*-*-*-m-0-iso10646-1 (#x2CB)
         Unicode data:
                 Name: CYRILLIC CAPITAL LETTER I
             Category: Letter, Uppercase
      Combining class: Lu
        Bidi category: Lu
             Old name: CYRILLIC CAPITAL LETTER II
            Lowercase: и

Character code properties: customize what to show
  name: CYRILLIC CAPITAL LETTER I
  old-name: CYRILLIC CAPITAL LETTER II
  general-category: Lu (Letter, Uppercase)
  decomposition: (1048) ('И')

[back]

コマンドライン

これunicodeユーティリティ(Debian / Ubuntu / ...などの一部のディストリビューションで利用可能)pip3 install unicode)は、1つ以上のUnicode文字に関する情報を表示します。エディタからコピーして貼り付けると、エディタはファイルとは異なる方法でクリップボードをエンコードできます。

$ unicode И
U+0418 CYRILLIC CAPITAL LETTER I
UTF-8: d0 98 UTF-16BE: 0418 Decimal: И Octal: \02030
И (и)
Lowercase: 0438
Category: Lu (Letter, Uppercase)
Bidi: L (Left-to-Right)

おすすめ記事