Unicode_utf8 のバックアップ差分(No.2) - アールメカブ

アールメカブ


Unicode_utf8 のバックアップ差分(No.2)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
[[Rの備忘録]]

たとえば "あ" の UTF-8 での文字コードは
 > charToRaw("あ")
 [1] e3 81 82
なのですが,Unicode では
> as.u_char(utf8ToInt("あ" ))
[1] U+3042
 > library(Unicode)
 > as.u_char(utf8ToInt("あ" ))
 [1] U+3042
です.この変換規則は,[[ここ:http://hp.vector.co.jp/authors/VA012733/doc/kanji-code.html]] に分かりやすく書かれています.一部引用します.
----------------------

>>
UCS-2(Universal Character Set coded in 2 octets)は2バイトのUnicodeのデータです。ASCIIの”a”と言う文字は0041の2バイトで、「U+0041」と表記します。UTFとは「Unicode Transformation Format, 8-bit encoding form」の略でASCIIとのご完成を保つために作られたようです。ASCIIは1バイトで表し、漢字コードなどは3バイトで表します。
<<

>>
UCS-2からUTF-8の変換表
<<

 UCS-2	ビット列	第1バイト	第2バイト	第3バイト
 U+0000...U+007F	00000000-0xxxxxxx	0xxxxxxx	なし	なし
 U+0080...U+07FF	00000xxx-xxyyyyyy	110xxxxx	10yyyyyy	なし
 U+0800...U+FFFF	xxxxyyyy-yyzzzzzz	1110xxxx	10yyyyyy	10zzzzzz

>>
例として、上記の表から、”あ”と言う文字を変換します。Unicodeで”あ”はU+3042ですのでこれをビット列にすると、
<<
 「0011 0000 0100 0010」
>>

  「0011 0000 0100 0010」

となり、表を参考にしてxyzに分けると、
<<
 「xxxx=0011、yyyyyy=000001、zzzzzz=000010」
>>

 「xxxx=0011、yyyyyy=000001、zzzzzz=000010」

バイト単位に組み立てます。
<<
 第1バイト=11100011 HEX表記でE3
 第2バイト=10000001 HEX表記で81
 第3バイト=10000010 HEX表記で82
>>

  第1バイト=11100011 HEX表記でE3
  第2バイト=10000001 HEX表記で81 
  第3バイト=10000010 HEX表記で82

UTF−8で”あ”の文字コードはE38182です。
<<