【问题标题】:Displaying the contents in local language : R以当地语言显示内容:R
【发布时间】:2017-10-28 15:43:30
【问题描述】:

我正在尝试从包含英语和本地语言(非英语)内容的网站下载数据。我能够获得英文数据,但对于本地语言的内容,我得到了如下所示的内容。我的问题是如何显示两者?

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>

【问题讨论】:

    标签: html r xml rvest rselenium


    【解决方案1】:

    你可能有你想要的文字,它只是显示不正确。

    我可以重现您的问题。您的示例数据有 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 中的一个已知错误。 可以在此处找到对此的一些其他探索 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)
    

    【讨论】:

    • 非常感谢您的回答。知道如何保存矩阵,以便我不仅可以在控制台中查看字符,还可以在保存的文件(例如 csv)中查看字符?
    • 评论太复杂了。添加到答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多