2017-05-21 17 views
2

encoding = "UTF-8"の漢字を含むファイルを読むためにread.csvを使用したとき、私はこれらの不思議なコードを取得します。比較少しずつR <U+9600><U+524D>のようにUTF-8コードを変換する方法

は、私は1つのマッチ漢字に彼らができるものを実現するが、どのように私は例えばバックR.

で漢字に変換することができ、<U+9600><U+524D>はそれぞれ"阀""前"です。

+0

Rコンソールに '\ U9600'を書き込むと、あなたが書いた記号阀が得られます。 ''を '\ U9600'で' gsub'に置き換えることはできますか? – Charles

+0

ファイルはUTF-8としてエンコードされていますか? –

+0

使用しているOSは何ですか? Windowsの場合、UTF-8の扱いは不安定です。 –

答えて

1

あなたはexmpaleのために、中国語の文字を得るためにあなたのロケール設定を変更する必要があります。

x <- "阀" 
print(x) will result in ##[1] "<U+9600>" 

バックアップとしてオブジェクト内のロケール設定を保存し、我々は

以前のようロケール設定を元に戻すことができるように
oldloc <- Sys.getlocale("LC_CTYPE") 

変更2番目の引数として "EN_US.UTF-8" を置くことによって、ロケール:

Sys.setlocale("LC_CTYPE", "en_US.UTF-8") 
print(x) ###The result is now [1] "阀" 

ロケールzh_CN.UTF-‌​8も試してみることができます。場合にはあなた次第混乱の何かが、あなたが以前の状態に到達するために、以下の使用することができます:OPは、Windowsマシン上で動作していることをコメントに行きながら

Sys.setlocate("LC_CYTPE",oldloc) 

私はちょうど実現し、上記のコマンドは、私のMacと非常によく動作しますシエラは、しかし、Windows上で以下のように7機の警告生成します。窓に上記の問題を解決するために、しかし

Warning message: 
In Sys.setlocale("LC_CTYPE", "en_US.UTF-8") : 
    OS reports request to set locale to "en_US.UTF-8" cannot be honored 

を、私は以下のようにstringiの機能stri_trans_generalを使用し、これは問題を解決し、必要な漢字を印刷します

stringi::stri_trans_general(x, "zh")

出力

> stringi::stri_trans_general(x, "zh") 
[1] "阀" 

あなたは、さまざまな地域のためのロケールを確認するためにhereを訪問することができます。

関連する問題