在R中编码特殊字符

在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",

我的数据集包含很多姓氏。这些姓氏用乌姆劳特以及其他特殊字符(如č、á、ñ等)书写

通过以下方式读取数据(使用encoding=“latin1”),我成功地以正确的方式显示UMLAUT:

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是用拉丁语编码的,但这并不能帮助我解决问题。