You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R保存含中文字符的data.frame为CSV出现乱码,如何解决?

解决R保存含中文字符CSV的乱码问题

核心原因

你的系统区域设置为英文(1252编码),R默认使用native.enc保存文件,导致中文字符被转义为Unicode码点(如<U+8001><U+738B>)。


解决方案

方法1:指定UTF-8-BOM编码保存(推荐,无需改系统)

在write.csv中添加fileEncoding = "UTF-8-BOM"参数,Windows下Excel能直接识别带BOM的UTF-8文件:

df = data.frame(name = c('老王'))
write.csv(df, 'C:/temp/test_chinese_characters.csv', row.names = FALSE, fileEncoding = "UTF-8-BOM")

如果用纯文本编辑器打开,也可以用fileEncoding = "UTF-8",但Excel可能需要手动选择UTF-8编码才能正常显示。

方法2:修改系统区域设置(永久生效)

适合长期处理中文数据的场景:

  • 打开Windows设置 → 时间和语言 → 语言和区域 → 「管理语言设置」
  • 选择「更改系统区域设置」,勾选「Beta版:使用Unicode UTF-8提供全球语言支持」,或直接选择「中文(简体,中国)」
  • 重启电脑后,R的区域编码会自动适配,默认保存即可正确处理中文。

方法3:使用tidyverse的readr包保存

readr包的write_csv函数默认采用UTF-8编码,无需额外配置:

# 首次使用先安装包
install.packages("readr")
library(readr)

df = data.frame(name = c('老王'))
write_csv(df, 'C:/temp/test_chinese_characters.csv')

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 00:40:01