« [R]任意の進数表記の文字列を任意の進数に変換する | トップページ | [R]ベクトルの要素同士を比較する »

2023年9月21日 (木)

[R]任意の文字コードから文字列を作成する

iconv関数、rawToChar関数、as.raw関数を組み合わせて使用する。以下は文字コードがUTF-8の環境で行った例。toオプションを省略すると自動的に現在の環境のUTF-8て出力されるため、以下の例ではtoオプションは省略可能。それぞれ順番にシフトJIS、UTF-8、UTF-16(ビッグエンディアン)、UTF-16(ビッグエンディアン)、UTF-16(リトルエンディアン)、Unicodeの文字コード(バイト列)からにそれぞれ文字列「阿位」を作成している。

> Sys.getlocale()
[1] "LC_COLLATE=Japanese_Japan.utf8;LC_CTYPE=Japanese_Japan.utf8;LC_MONETARY=Japanese_Japan.utf8;LC_NUMERIC=C;LC_TIME=Japanese_Japan.utf8"
> iconv(rawToChar(as.raw(c(0x88, 0xa2, 0x88, 0xca))), from = "SJIS", to = "UTF-8")
[1] "阿位"
> iconv(rawToChar(as.raw(c(0xe9, 0x98, 0xbf, 0xe4, 0xbd, 0x8d))), from = "UTF-8", to = "UTF-8")
[1] "阿位"
> iconv(rawToChar(as.raw(c(0x96, 0x3f, 0x4f, 0x4d))), from = "UTF-16", to = "UTF-8")
[1] "阿位"
> iconv(rawToChar(as.raw(c(0x96, 0x3f, 0x4f, 0x4d))), from = "UTF-16BE", to = "UTF-8")
[1] "阿位"
> iconv(rawToChar(as.raw(c(0x3f, 0x96, 0x4d, 0x4f))), from = "UTF-16LE", to = "UTF-8")
[1] "阿位"
> iconv(rawToChar(as.raw(c(0x96, 0x3f, 0x4f, 0x4d))), from = "unicodeFFFE", to = "UTF-8")
[1] "阿位"

« [R]任意の進数表記の文字列を任意の進数に変換する | トップページ | [R]ベクトルの要素同士を比較する »

R(文字と文字列)」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« [R]任意の進数表記の文字列を任意の進数に変換する | トップページ | [R]ベクトルの要素同士を比較する »

無料ブログはココログ

■■

■■■