31

Rで(foreignパッケージを使用して) Stata データセットをインポートすると、インポートに無効な文字が含まれることがありますUTF-8。これだけでもかなり不快ですが、(パッケージJSONを使用して)オブジェクトを変換しようとするとすぐにすべてが壊れます。rjson

UTF-8文字列内の無効な文字を特定し、その後削除するにはどうすればよいですか?

4

4 に答える 4

38

iconvと it 引数を使用した別のソリューションsub: 文字列。NA でない場合 (ここでは '' に設定)、入力内の変換不可能なバイトを置き換えるために使用されます。

x <- "fa\xE7ile"
Encoding(x) <- "UTF-8"
iconv(x, "UTF-8", "UTF-8",sub='') ## replace any non UTF-8 by ''
"faile"

ここで、適切なエンコーディングを選択すると、次のことに注意してください。

x <- "fa\xE7ile"
Encoding(x) <- "latin1"
xx <- iconv(x, "latin1", "UTF-8",sub='')
facile
于 2013-06-25T08:01:22.060 に答える
1

それらを削除する代わりに、を使用してそれらを UTF-8 文字列に変換することができますiconv

require(foreign)
dat <- read.dta("data.dta")

for (j in seq_len(ncol(dat))) {
   if (class(dat[, j]) == "factor")
       levels(dat[, j]) <- iconv(levels(dat[, j]), from = "latin1", to = "UTF-8")
}

latin1あなたのケースでは、より適切なエンコンディングに置き換えることができます。私たちはあなたのデータにアクセスできないため、どちらがより適切かを知ることは困難です.

于 2013-06-25T07:53:29.587 に答える