特定のエンコーディングのテキスト文書または文字列です。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 バイトに110xxxxx
2 10xxxxxx
2と表示されます。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 0000
0x10 0x20
0xd0 0xb0
これはダンプ出力と一致しませんが、
ラテン語「Á」→U+ 00C1
0000 11
00 0001
→→→0x03 0x01
。0xc3 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)