2017-05-28 77 views
3

我試圖從包含英語和當地語言(非英語)內容的網站下載數據。我能夠獲得英文數據,但對於使用本地語言的內容,我得到了如下所示的內容。我的問題是如何顯示兩者?以當地語言顯示內容:R

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> 

回答

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$X1df[,1]將顯示Unicode, 但df[1, ]不會。

一種解決方法是,as.matrix(df)將顯示整個事情 爲Unicode字符。

這顯然是在Windows版本的RGUI的一個已知的bug。 這樣的一些其他的探索可以在這個 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) 
+0

非常感謝您的回答。任何想法如何保存矩陣,以便我不僅可以在控制檯中查看角色,還可以在保存的文件(例如csv)中查看角色? – user227710

+1

太複雜的評論。加入回答。 – G5W