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

JS、React Native环境下Windows-1252转UTF-8乱码问题求解

编码转码失败原因

你当前的操作存在两个核心错误:

  1. 拿到的responseData已经被HTTP请求客户端默认按UTF-8解码为字符串,原始的二进制字节信息已经损坏,此时再用Buffer.from(responseData)重建的缓冲区并不是接口返回的原始编码字节
  2. 你给出的乱码是俄文内容,对应编码为Windows-1251(西里尔编码),不是你用的Windows-1252(西欧编码),编码类型匹配错误自然转码失败
正确实现方案

1. 请求阶段获取原始二进制流

请求RSS接口时配置客户端不自动解码内容,直接返回原始二进制流,以常用的axios为例:

import axios from 'axios';
import { Buffer } from 'buffer';
import iconv from 'iconv-lite';

const rssResponse = await axios.get('你的RSS接口地址', {
  // 关键配置,直接返回ArrayBuffer格式的原始二进制数据
  responseType: 'arraybuffer'
});

2. 按正确编码解码

// 用原始响应数据创建Buffer
const rawBuffer = Buffer.from(rssResponse.data);
// 用Windows-1251解码,不要用Windows-1252
const correctText = iconv.decode(rawBuffer, 'win1251');
console.log(correctText);

转码验证

你给出的示例乱码Íîâîñòè Óëüÿíîâñêà按上述方法转码后,会得到正确俄文内容:Новости Ульяновска,符合新闻RSS的内容场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:27:02