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

调用PDFTables API保存XML文件出现乱码问题求助

解决PDFTables API返回内容保存为XML后乱码的问题

看起来你遇到的乱码问题主要有两个核心原因:没指定正确的API输出格式,或者文件写入时没处理好编码,我来一步步帮你排查解决:

1. 先确认API请求是否指定了XML输出格式

PDFTables API的默认输出格式是CSV,不是XML!如果你的请求URL里没明确加format=xml参数,接口返回的其实是CSV内容,强行存成.xml文件,编辑器自然会显示乱码。

先修改请求URL,补上格式参数:

result = RestClient.post "https://pdftables.com/api?key=nn123450hsn&format=xml", :myfile => File.new("./lib/assets/PeterValleyHexacoResults.pdf", "rb")

2. 确保文件写入时使用正确编码

就算API返回了正确的XML,直接写入文件时不指定编码,也可能导致编辑器识别错误。建议在File.open时明确指定UTF-8编码,同时用result.body获取纯响应内容(避免RestClient响应对象自带的额外信息干扰):

File.open('./lib/assets/test.xml', "w:UTF-8") do |f|
  f.puts result.body
end

3. 完整修正后的代码

把上面的调整结合起来,完整代码如下:

# 发起请求时明确指定XML格式
result = RestClient.post "https://pdftables.com/api?key=nn123450hsn&format=xml", :myfile => File.new("./lib/assets/PeterValleyHexacoResults.pdf", "rb")

# 可选:打印响应头确认内容类型,方便后续排查
puts "响应内容类型:#{result.headers[:content_type]}"

# 以UTF-8编码写入XML文件
File.open('./lib/assets/test.xml', "w:UTF-8") do |f|
  f.puts result.body
end

额外排查小技巧

如果还是乱码,可以先在控制台打印result.body,看看输出是不是正常的XML结构:

puts result.body

如果控制台输出就是乱码,可能是PDF本身编码特殊,或者API返回了压缩内容,这种情况可以尝试用result.body.force_encoding('UTF-8')强制转码试试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:37:00