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

React Native中Fetch请求后如何处理字符编码问题?

在React Native中实现win1250转UTF-8解决接口返回乱码

直接用response.text()会出现乱码,因为Fetch默认按UTF-8解析响应内容,但你的接口返回的是win1250编码。要解决这个问题,得先获取原始二进制数据,再用编码处理库转成正确的UTF-8字符串,具体步骤如下:

1. 安装纯JS编码处理库

推荐使用iconv-lite,它是纯JavaScript实现,不需要配置原生依赖,直接适配React Native:

npm install iconv-lite

2. 修改Fetch请求逻辑

放弃response.text(),改用arrayBuffer()获取原始二进制数据,再通过iconv-lite解码:

import iconv from 'iconv-lite';

fetch('URL', {
  method: 'POST',
  headers: {
    'Content-Type': 'text/xml',
  },
})
.then(response => response.arrayBuffer())
.then(buffer => {
  // 将ArrayBuffer转换为iconv-lite可处理的Buffer格式
  const buf = Buffer.from(buffer);
  // 以win1250编码解码为正常UTF-8字符串
  const decodedData = iconv.decode(buf, 'win1250');
  console.log(decodedData); // 输出正确的Posteľ roštová
})
.catch(err => console.error(err));

逻辑说明

你本地的处理是把乱码字符串按win1250编码转回二进制,再解码成UTF-8。在React Native里我们直接跳过“乱码字符串转二进制”的步骤,从接口拿到最原始的二进制数据后直接用win1250解码,从根源避免了乱码产生。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:50:30