99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2018-11-04 閱讀量: 859
R里的字符串

每個(gè)十六進(jìn)制數(shù)表示信息的一個(gè)字節(jié): 48 是 H、 61 是 a 等。從十六進(jìn)制數(shù)到字符的這種映

射稱為編碼,這個(gè)示例中的編碼方式稱為 ASCII。 ASCII 可以非常好地表示英文字符,因

為它就是美國信息交換標(biāo)準(zhǔn)代碼(American Standard Code for Information Interchange)的

縮寫。

對(duì)于英語之外的其他語言,事情就變得更加復(fù)雜了。計(jì)算機(jī)發(fā)展的早期階段有很多為非英

語字符進(jìn)行編碼的標(biāo)準(zhǔn),它們之間甚至是相互矛盾的。要想正確表示一個(gè)字符串,不僅

需要知道它的值,還要知道其編碼方式。例如, Latin1(即 ISO-8859-1, 用于西歐語言)

和 Latin2(即 ISO-8859-2,用于東歐語言)是兩種常用的編碼方式。字節(jié) b1 在 Latin1

中表示“±”,但在 Latin2 中則表示“?”!好在現(xiàn)在有一種幾乎所有語言都支持的標(biāo)準(zhǔn):

UTF-8。 UTF-8 可以為現(xiàn)在人類使用的所有字符進(jìn)行編碼,同時(shí)還支持很多特殊字符(如

表情符號(hào)!)。

readr 全面支持 UTF-8:當(dāng)讀取數(shù)據(jù)時(shí),它假設(shè)數(shù)據(jù)是 UTF-8 編碼的,并總是使用 UTF-8

編碼寫入數(shù)據(jù)。這是非常好的默認(rèn)方式,但對(duì)于從不支持 UTF-8 的那些舊系統(tǒng)中產(chǎn)生的數(shù)

據(jù)則無能為力。遇到這種情況時(shí),你的字符串打印出來就是一堆亂碼。有時(shí)只有一兩個(gè)字

符是亂碼;有時(shí)則完全不知所云。例如:

x1 <- "El Ni\xf1o was particularly bad this year"
x2 <- "\x82\xb1\x82\xf1\x82\xc9\x82\xbf\x82\xcd"

要想解決這個(gè)問題,需要在 parse_character() 函數(shù)中設(shè)定編碼方式:

parse_character(x1, locale = locale(encoding = "Latin1"))
#> [1] "El Ni?o was particularly bad this year"
parse_character(x2, locale = locale(encoding = "Shift-JIS"))
#> [1] "こんにちは"

如何才能找到正確的編碼方式呢?如果足夠幸運(yùn),那么編碼方式可能就寫在數(shù)據(jù)文檔中。

遺憾的是這種情況非常罕見,因此 readr 提供了 guess_encoding() 函數(shù)來幫助你找出編碼

方式。但這個(gè)函數(shù)并非萬無一失,如果有大量文本(不像本例),效果就會(huì)更好,它確實(shí)

是一個(gè)良好的起點(diǎn)。希望試驗(yàn)幾次后,你就能夠找到正確的編碼方式:

guess_encoding(charToRaw(x1))
#> encoding confidence
#> 1 ISO-8859-1 0.46
#> 2 ISO-8859-9 0.23
guess_encoding(charToRaw(x2))
#> encoding confidence
#> 1 KOI8-R 0.42

guess_encoding() 的第一個(gè)參數(shù)可以是一個(gè)文件路徑,也可以是一個(gè)原始向量(適用于字

符串已經(jīng)在 R 中的情況),就像本示例一樣。

0.0000
5
關(guān)注作者
收藏
評(píng)論(0)

發(fā)表評(píng)論

暫無數(shù)據(jù)
推薦帖子