我正在尝试从网站下载包含英语和当地语言(非英语)内容的数据。我能够获得英文数据,但对于本地语言的内容,我得到了类似下面的内容。我的问题是如何显示两者?
X1 X2 X3
NA
1 <U+0926><U+094B><U+0932><U+0916><U+093E> <U+0915><U+093E><U+0932><U+093F><U+0928><U+094D><U+091A><U+094B><U+0915> <U+0917><U+093E><U+0909><U+0901><U+092A><U+093E><U+0932><U+093F><U+0915><U+093E>
2 <U+0926><U+094B><U+0932><U+0916><U+093E> <U+0915><U+093E><U+0932><U+093F><U+0928><U+094D><U+091A><U+094B><U+0915> <U+0917><U+093E><U+0909><U+0901><U+092A><U+093E><U+0932><U+093F><U+0915><U+093E>
3 <U+0926><U+094B><U+0932><U+0916><U+093E> <U+0915><U+093E><U+0932><U+093F><U+0928><U+094D><U+091A><U+094B><U+0915> <U+0917><U+093E><U+0909><U+0901><U+092A><U+093E><U+0932><U+093F><U+0915><U+093E>
4 <U+0926><U+094B><U+0932><U+0916><U+093E> <U+0915><U+093E><U+0932><U+093F><U+0928><U+094D><U+091A><U+094B><U+0915> <U+0917><U+093E><U+0909><U+0901><U+092A><U+093E><U+0932><U+093F><U+0915><U+093E>
5 <U+0926><U+094B><U+0932><U+0916><U+093E> <U+0915><U+093E><U+0932><U+093F><U+0928><U+094D><U+091A><U+094B><U+0915> <U+0917><U+093E><U+0909><U+0901><U+092A><U+093E><U+0932><U+093F><U+0915><U+093E>
6 <U+0926><U+094B><U+0932><U+0916><U+093E> <U+0915><U+093E><U+0932><U+093F><U+0928><U+094D><U+091A><U+094B><U+0915> <U+0917><U+093E><U+0909><U+0901><U+092A><U+093E><U+0932><U+093F><U+0915><U+093E>
7 <U+0926><U+094B><U+0932><U+0916><U+093E> <U+0915><U+093E><U+0932><U+093F><U+0928><U+094D><U+091A><U+094B><U+0915> <U+0917><U+093E><U+0909><U+0901><U+092A><U+093E><U+0932><U+093F><U+0915><U+093E>
8 <U+0926><U+094B><U+0932><U+0916><U+093E> <U+0915><U+093E><U+0932><U+093F><U+0928><U+094D><U+091A><U+094B><U+0915> <U+0917><U+093E><U+0909><U+0901><U+092A><U+093E><U+0932><U+093F><U+0915><U+093E>
9 <U+0926><U+094B><U+0932><U+0916><U+093E> <U+0915><U+093E><U+0932><U+093F><U+0928><U+094D><U+091A><U+094B><U+0915> <U+0917><U+093E><U+0909><U+0901><U+092A><U+093E><U+0932><U+093F><U+0915><U+093E>
10 <U+0926><U+094B><U+0932><U+0916><U+093E> <U+0915><U+093E><U+0932><U+093F><U+0928><U+094D><U+091A><U+094B><U+0915> <U+0917><U+093E><U+0909><U+0901><U+092A><U+093E><U+0932><U+093F><U+0915><U+093E>
答案 0 :(得分:4)
你可能有你想要的文字,它只是显示不正确。
我可以重现你的问题。您的示例数据具有相同的字符串10次。 为了保持显示的合理性,我只重复了3次。
## Hex codes from your example
S1 = c("0926", "094B", "0932", "0916", "093E")
S2 = c("0915", "093E", "0932", "093F", "0928", "094D", "091A", "094B", "0915")
S3 = c("0917", "093E", "0909", "0901", "092A", "093E", "0932", "093F", "0915", "093E")
## Convert to Devanagari strings
X1 = rep(intToUtf8(strtoi(S1, base=16L)), 3)
X2 = rep(intToUtf8(strtoi(S2, base=16L)), 3)
X3 = rep(intToUtf8(strtoi(S3, base=16L)), 3)
df = data.frame(X1, X2, X3, stringsAsFactors=FALSE)
现在X1
会正确显示,但df
不会
奇怪的是,df$X1
和df[,1]
会显示unicode,
但是df[1, ]
不会。
解决方法是as.matrix(df)
将显示整个内容
作为unicode字符。
这显然是Windows版RGui中的已知错误。 在此可以找到对此的一些其他探索 Earlier SO Question 这个Mailing List Post
<强>附录强>
将这些字符串写入可读的Unicode文件需要一些小心。 这为我的例子创建了一个csv文件。
Mat = as.matrix(df)
F <- file("Test1.csv", "wb", encoding="UTF-8")
BOM <- charToRaw('\xEF\xBB\xBF')
writeBin(BOM, F)
for(r in 1:nrow(Mat)) {
Line = paste(Mat[r,], collapse=",")
writeLines(Line, F, useBytes=T)
}
close(F)