如何将文件夹中所有.txt文件从UTF-16转码为UTF-8以适配R读取
批量转换UTF-16 TXT文件为UTF-8及R读取方案
一、批量转换编码的R脚本
如果需要永久将指定文件夹内所有.txt文件转为UTF-8编码,可使用以下脚本批量处理:
# 替换为你的目标文件夹路径 target_folder <- "C:/your/txt/folder/path" # 获取所有.txt文件的完整路径 txt_files <- list.files(target_folder, pattern = "\\.txt$", full.names = TRUE) # 循环处理每个文件 for (file in txt_files) { # 读取UTF-16编码文件(自动识别BOM,无BOM可尝试"UTF-16LE"或"UTF-16BE") file_data <- readLines(file, encoding = "UTF-16", skipNul = TRUE) # 选项1:覆盖原文件为UTF-8编码 writeLines(file_data, file, encoding = "UTF-8") # 选项2:保存为新文件(避免覆盖原文件) # new_file <- sub("\\.txt$", "_utf8.txt", file) # writeLines(file_data, new_file, encoding = "UTF-8") cat(sprintf("处理完成:%s\n", basename(file))) }
注意事项:
- 务必替换
target_folder为你的实际文件夹路径; - 根据需求选择覆盖原文件或保存为新文件的选项;
- 若读取时出现乱码,说明文件是无BOM的UTF-16小端/大端编码,将
encoding参数改为"UTF-16LE"或"UTF-16BE"即可。
二、直接在R中读取UTF-16文件(无需提前转换)
如果不需要修改原文件,可直接在读取时指定编码,让R自动转码处理:
# 用read.delim读取表格类UTF-16文件 data_frame <- read.delim( "path/to/your/file.txt", fileEncoding = "UTF-16", stringsAsFactors = FALSE ) # 用readLines读取纯文本内容 text_content <- readLines("path/to/your/file.txt", encoding = "UTF-16")
手动转码方案(应对特殊情况)
如果上述方法失效,可通过iconv手动转码:
# 读取文件原始字节 raw_bytes <- readBin("path/to/your/file.txt", "raw", file.info("your/file.txt")$size) # 转码为UTF-8 utf8_text <- iconv(rawToChar(raw_bytes), from = "UTF-16", to = "UTF-8") # 拆分为行向量(按需使用) text_lines <- strsplit(utf8_text, "\n")[[1]]
内容的提问来源于stack exchange,提问作者jc2525
相关产品推荐
相关产品推荐

