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

R中rvest包read_html()指定多种编码仍无法读取日文网页如何解决?

R语言rvest读取EUC-JP编码日文网页报错解决方案

问题原因

直接调用read_html()传入URL时,xml2底层解析器遇到网页中不符合EUC-JP编码规范的异常字节会直接中断解析,抛出转换错误。

解决方案

步骤1:先抓取网页原始响应

不要直接将URL传入read_html(),先用httr包获取网页完整二进制响应,避免自动解析时的编码冲突:

library(rvest)
library(httr)

# 发送请求获取原始响应
resp <- GET("https://www.post.japanpost.jp/kitte_hagaki/stamp/kogata/index.php?p=4")

步骤2:手动转码后读取

两种转码方案可选,均可避开异常字节的报错问题:

  • 方案1:用iconv转码,主动过滤异常字节
# 手动转码,不符合编码规范的字节自动替换为空
html_text <- iconv(rawToChar(resp$content), from = "EUC-JP", to = "UTF-8", sub = "")

# 解析网页
doc <- read_html(html_text, encoding = "UTF-8")
  • 方案2:用httr内置的content函数处理编码
# 直接指定编码提取文本内容
html_text <- content(resp, as = "text", encoding = "EUC-JP")

# 解析网页
doc <- read_html(html_text)

步骤3:验证解析结果

提取页面元素验证日文是否正常显示:

# 提取页面标题测试
html_text(html_element(doc, "title"))

正常运行会返回日文格式的页面标题,说明解析成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 18:36:03