R读取含日文字符CSV文件乱码及UTF-8编码警告解决问询
R读取含多语言字符CSV乱码及报错解决方案
问题原因梳理
- 日文乱码:base R默认读取用系统本地编码,和CSV文件实际编码不匹配
incomplete final line警告:CSV文件最后一行末尾未添加换行符- 加
fileEncoding="utf-8"后报无效输入:文件实际编码并非标准UTF-8,可能是UTF-8带BOM、Shift-JIS(日文系统常用编码)等格式
分步解决方法
第一步:修复CSV基础问题
打开CSV文件,将光标移动到最后一行的末尾,按下回车键后保存文件,即可解决incomplete final line警告。
第二步:调整base R读取参数
根据文件实际编码替换fileEncoding参数值即可:
- 若为Windows系统导出的带BOM的UTF-8文件,使用如下代码:
texts <- read.csv("text.csv", sep = ",", header = TRUE, fileEncoding = "UTF-8-BOM")
- 若为日文系统导出的文件,尝试如下编码参数:
# 编码为Shift-JIS时使用 texts <- read.csv("text.csv", sep = ",", header = TRUE, fileEncoding = "Shift-JIS") # 编码为CP932时使用 texts <- read.csv("text.csv", sep = ",", header = TRUE, fileEncoding = "CP932")
可通过文本编辑器(如Notepad++)打开CSV文件,查看右下角标注的编码确认实际编码格式。
第三步:兼容性更强的读取方案(推荐)
base R的读取函数对多语言编码兼容性一般,可使用readr包的read_csv函数,自动适配编码且容错性更高:
- 安装并加载依赖包
install.packages("readr") library(readr)
- 读取文件,根据实际编码调整
encoding参数即可
texts <- read_csv("text.csv", locale = locale(encoding = "UTF-8"))
兜底乱码修复方案
若读取后仍有部分字符乱码,可使用iconv函数对字段单独转码:
# 示例为从CP932编码转至UTF-8,根据实际编码替换from参数值即可 texts$keyword <- iconv(texts$keyword, from = "CP932", to = "UTF-8")
内容的提问来源于stack exchange,提问作者Miguel López Dalmau
相关产品推荐
相关产品推荐

