Re: [问题] R中文编码(MS950)问题

楼主: AmuroRai (SIEG ZEON!!!!!!)   2016-01-02 00:15:08
直到刚刚才有空档碰电脑,发现如果直接用c大的做法程式可以顺利执行,但当我想打开
用stri_encoding改过的内容物(即htmlFileEncodingUTF8)时R就会立刻当机。
而在稍微改一下c大的做法后就正常了。
大致上的概念就是使用RCurl而不是用httr来抓内容,之后照我原来的做法用rvest解并用
tmcn去转码,附上程式码和结果如下:
> rm(list=ls())
>
> library(tmcn)
> library(httr)
> library(rvest)
> library(magrittr)
> library(RCurl)
>
#改成使用RCurl的getURLContent来抓
> r<-getURLContent("http://isin.twse.com.tw/isin/C_public.jsp?strMode=2")
#一样用rvest来解内容
> res<-r%>%read_html()%>%
+ html_node(".h4")%>%html_nodes(xpath="tr")%>%html_text()
#用tmcn转码成utf8
> ress<-toUTF8(res)
#转码前的结果,一样是乱码
> res[1:5]
[1] "\xe6\x9c桧挟霅桧驼隞\xa3\xe8\x99蓢\x8f箫\x90讵迂 \xe5\x9c鹉\x9aˋ\xad桧驼
颲刻\xad哣\x99蓸Ⅳ(ISIN Code)銝箫\xb8弴鞒掸弡ū\xe5锑\xe7椡璆剖锑
CFICode\xe5\x82⒣酉"
[2] " \xe8篭蟡\xa8 "
[3] "1101 \xe3\u0080\u0080\xe5阋瘜冉W00011010041962/02/09銝箫\xb8弴偌瘜亘
极璆胥SVUFR"
[4] "1102 \xe3\u0080\u0080鈭靀野TW00011020021962/06/08銝箫\xb8弴偌瘜亘极
璆胥SVUFR"
[5] "1103 \xe3\u0080\u0080\xe5\x98栉野TW00011030001969/11/14銝箫\xb8弴偌
瘜亘极璆胥SVUFR"
#转码后的结果看来是正常多了
> ress[1:5]
[1] "有价证券代号及名称 国际证券辨识号码(ISIN Code)上市日市场别产业别CFICode备
注"
[2] " 股票 "
[3] "1101  台泥TW00011010041962/02/09上市水泥工业ESVUFR"
[4] "1102  亚泥TW00011020021962/06/08上市水泥工业ESVUFR"
[5] "1103  嘉泥TW00011030001969/11/14上市水泥工业ESVUFR"
>
作者: kpwada (征服的怒火)   2016-01-02 10:56:00
感谢分享
作者: psinqoo (零度空間)   2016-01-02 15:52:00
我想表示 linux 与 win 会有不同

Links booklink

Contact Us: admin [ a t ] ucptt.com