我安裝了全新的 R 版本 4.2.0 并嘗試運行我用 4.1.x 版本撰寫的代碼。
讀取資料時read.csv彈出此新錯誤:
make.names(col.names, unique = TRUE) 中的錯誤:無效的多位元組字串 8
我認為這與新的原生 UTF-8 支持有關嗎?
我在支持英語的 Windows 10 下運行 R,我不知道 csv 檔案中有任何特殊字符,但我也不能完全排除它,因為它是一個非常大的檔案。
我該怎么做才能切換回運行時沒有任何錯誤的舊編碼?
uj5u.com熱心網友回復:
對于版本 < 4.2,R的默認行為是:
如果不設定默認編碼,檔案將使用 UTF-8(Mac 桌面、Linux 桌面和服務器)或系統默認編碼(Windows)打開。
這種行為在 R 4.2 中有所改變:
R 4.2 for Windows 將支持 UTF-8 作為本機編碼
要找出 Windows 10 上的默認編碼,請運行以下 Powershell 命令:
[System.Text.Encoding]::Default
我的 Windows 10 機器上的輸出是:
IsSingleByte : True
BodyName : iso-8859-1
EncodingName : Western European (Windows)
HeaderName : Windows-1252
WebName : Windows-1252
WindowsCodePage : 1252
IsBrowserDisplay : True
IsBrowserSave : True
IsMailNewsDisplay : True
IsMailNewsSave : True
EncoderFallback : System.Text.InternalEncoderBestFitFallback
DecoderFallback : System.Text.InternalDecoderBestFitFallback
IsReadOnly : True
CodePage : 1252
這可以read.csv作為要使用的編碼傳遞給:
read.csv(path_to_file, encoding = "windows-1252")
如果您不確定如何將 Powershell 的輸出轉換為相關字串,您可以使用stringi包搜索所有編碼的串列:
# Replace "1252" with the relevant output from the Powershell command
cat(grep("1252", stringi::stri_enc_list(simplify = FALSE), value = TRUE, ignore.case = TRUE))
您可以從輸出中的任何選項中進行選擇:
# c("ibm-1252", "ibm-1252_P100-2000", "windows-1252") c("cp1252", "ibm-5348", "ibm-5348_P100-1997", "windows-1252")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/471444.html
標籤:r CSV 编码 UTF-8 windows-10
上一篇:使用Bash在CSV中過濾月份
