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

R 3.5无法读取UTF-16格式CSV文件,R 3.4.3可正常执行

R 3.5.0读取UTF-16制表文件时出现"no lines available in input"的解决办法

背景问题

我有一段读取ASIC公开数据的R代码,在R 3.4.3版本中完全正常运行:

read.csv("http://asic.gov.au/Reports/YTD/2018/RR20180420-001-SSDailyYTD.csv", skip=1, fileEncoding = "UTF-16", sep = "\t", header = FALSE)

但升级到R 3.5.0后,直接抛出错误:

Error in read.table(file = file, header = header, sep = sep, quote = quote, : no lines available in input

我的R 3.5.0环境信息:

R version 3.5.0 (2018-04-23) 
Platform: x86_64-w64-mingw32/x64 (64-bit) 
Running under: Windows >= 8 x64 (build 920...)

问题根源

查了R 3.5.0的更新日志和社区讨论后发现,新版本在处理远程URL的编码解析逻辑上做了调整:

  • 基础包的read.table(read.csv的底层函数)对UTF-16编码的字节顺序标记(BOM)识别更严格
  • 直接从HTTP URL读取文件时,编码转换的中间步骤可能出现数据丢失,导致读取到空内容

可行解决方案

方案1:先下载到本地再读取(最稳妥)

绕开远程读取的编码问题,先把文件以二进制形式下载到本地临时文件,再进行读取:

# 创建临时文件路径
temp_file <- tempfile(fileext = ".csv")
# 二进制下载文件,避免编码损坏
download.file("http://asic.gov.au/Reports/YTD/2018/RR20180420-001-SSDailyYTD.csv", destfile = temp_file, mode = "wb")
# 读取本地文件
df <- read.csv(temp_file, skip=1, fileEncoding = "UTF-16", sep = "\t", header = FALSE)
# 清理临时文件
unlink(temp_file)

mode = "wb"是关键,确保Windows系统不会把UTF-16文件当成普通文本文件进行转换,破坏原有的编码结构。

方案2:调整编码参数和读取选项

尝试明确指定UTF-16的字节序(比如小端UTF-16LE),同时关闭引号解析避免不必要的干扰:

df <- read.table("http://asic.gov.au/Reports/YTD/2018/RR20180420-001-SSDailyYTD.csv", 
                 skip=1, 
                 fileEncoding = "UTF-16LE", 
                 sep = "\t", 
                 header = FALSE,
                 quote = "")

R 3.5.0对引号的解析逻辑更严格,如果文件里存在不规则的引号,会导致读取中断,quote = ""可以跳过这个检查步骤。

方案3:用readr包替代基础函数

readr包的读取工具对编码兼容性更好,而且支持远程URL直接读取,不受基础R版本变更的影响:

# 如果未安装readr包先执行安装
install.packages("readr")
library(readr)

df <- read_tsv("http://asic.gov.au/Reports/YTD/2018/RR20180420-001-SSDailyYTD.csv", 
               skip = 1, 
               locale = locale(encoding = "UTF-16"),
               col_names = FALSE)

read_tsv专门处理制表分隔文件,locale参数能精准指定编码,读取效率也比基础函数更高。

验证方法

运行完代码后,执行head(df)查看前几行数据,确认没有空行、乱码问题,就说明读取成功了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:15:13