在R中编码特殊字符
我的数据集包含很多姓氏。这些姓氏用乌姆劳特以及其他特殊字符(如č、á、ñ等)书写 通过以下方式读取数据(使用encoding=“latin1”),我成功地以正确的方式显示UMLAUT:在R中编码特殊字符,r,encoding,read.csv,R,Encoding,Read.csv,我的数据集包含很多姓氏。这些姓氏用乌姆劳特以及其他特殊字符(如č、á、ñ等)书写 通过以下方式读取数据(使用encoding=“latin1”),我成功地以正确的方式显示UMLAUT: read_data <- function(directory,debug=FALSE){ file_list = list.files(path = directory, pattern = "*.csv",
read_data <- function(directory,debug=FALSE){
file_list = list.files(path = directory,
pattern = "*.csv",
full.names = TRUE);
df_read = data.frame();
for (filename in file_list){
df_temp = read_delim(filename,
delim=';',
locale = locale(encoding = "latin1"));
if(debug){
print(paste0(c(filename, " : ", dim(df_temp))));
}
df_read = rbind(df_read, df_temp);
}
names(df_read) = make.names(names(df_read))
return(df_read)
}
读取数据与此同时,我尝试了很多不同的方法来解决我的编码问题。到目前为止,我所能得到的最好结果是使用以下读入函数:
read_data <- function(directory,debug=FALSE){
file_list = list.files(path = directory,
pattern = "*.csv",
full.names = TRUE);
df_read = data.frame();
for (filename in file_list){
df_temp = read.csv(filename,encoding="UTF-16LE", sep=";", header=TRUE);
if(debug){
print(paste0(c(filename, " : ", dim(df_temp))));
}
df_read = rbind(df_read, df_temp);
}
names(df_read) = make.names(names(df_read))
return(df_read)
}
读取数据为什么不使用encoding=“UTF-8”
?您需要知道数据的原始编码您所说的以正确的方式显示其他特殊字符的确切含义是什么?你是如何展示它们的?如果您包含一个简单的示例输入和所需的输出,可以用来测试和验证可能的解决方案,那么就更容易为您提供帮助。您绝对确定数据是以拉丁1编码存储的吗?数据从哪里来?@phiver,因为我再次丢失了umlauts。@布鲁诺:我将excel文件转换为(逗号分隔的)csv文件。如果我选择编码“UTF-8”,则UMLAUT和其他特殊字符都显示为“?”或白色空框。当我选择编码“latin1”时,只有其他特殊字符以这种方式显示。我读到来自excel文件的csv是用拉丁语编码的,但这并不能帮助我解决问题。