"invalid multibyte string 8" 在 R 版本 4.2.0 中弹出 read.csv 错误
"invalid multibyte string 8" error popping up for read.csv in R version 4.2.0
我安装了 b运行d-new R 版本 4.2.0 并尝试运行我用版本 4 编写的代码。1.x。
使用 read.csv
读取数据时弹出此新错误:
Error in make.names(col.names, unique = TRUE) :
invalid multibyte string 8
我认为这与新的原生 UTF-8 支持有关?
我 运行ning R under Windows 11 支持英语,我不知道 csv 文件中有任何特殊字符,但我也不能完全排除它,因为它相当一个巨大的文件。
我怎样才能切换回 运行 没有任何错误的旧编码?
R 的 default 版本 < 4.2 的行为是:
If you don't set a default encoding, files will be opened using UTF-8
(on Mac desktop, Linux desktop, and server) or the system's default
encoding (on Windows).
此行为在 R 4.2 中有 changed:
R 4.2 for Windows will support UTF-8 as native encoding
要找出 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")
read.csv(path_to_file, fileEncoding= "windows-1252")
是为我做的。注意 fileEncoding 而不是 encoding.
我安装了 b运行d-new R 版本 4.2.0 并尝试运行我用版本 4 编写的代码。1.x。
使用 read.csv
读取数据时弹出此新错误:
Error in make.names(col.names, unique = TRUE) : invalid multibyte string 8
我认为这与新的原生 UTF-8 支持有关?
我 运行ning R under Windows 11 支持英语,我不知道 csv 文件中有任何特殊字符,但我也不能完全排除它,因为它相当一个巨大的文件。
我怎样才能切换回 运行 没有任何错误的旧编码?
R 的 default 版本 < 4.2 的行为是:
If you don't set a default encoding, files will be opened using UTF-8 (on Mac desktop, Linux desktop, and server) or the system's default encoding (on Windows).
此行为在 R 4.2 中有 changed:
R 4.2 for Windows will support UTF-8 as native encoding
要找出 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")
read.csv(path_to_file, fileEncoding= "windows-1252")
是为我做的。注意 fileEncoding 而不是 encoding.