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

Flutter无法正常显示中文字符,浏览器却可正常显示的问题求助

Flutter中UTF8 JSON中文乱码解决方法

问题分析

Web服务器返回UTF8格式的JSON,浏览器能正常显示中文,但Flutter解析后显示乱码。核心原因是Flutter的http包默认用latin1编码解析响应内容,若服务器返回的Content-Type头未明确指定charset=utf-8,就会触发中文乱码;而浏览器会自动检测UTF8编码,因此能正常显示。

解决方案

1. 手动用UTF8解码响应字节流

修改loadData方法,直接解析响应的字节数组而非默认的response.body:

import 'dart:convert';
import 'package:http/http.dart' as http;

void loadData() async {
  final response = await http.get(
    Uri.parse('http://192.168.0.8:88/searchcustomer'),
    headers: {
      "Content-type": "application/json",
      "Accept": "application/json",
      "Connection": "Keep-Alive",
    },
  );
  // 手动用UTF8解码字节流,避免乱码
  String decodedBody = utf8.decode(response.bodyBytes);
  print(decodedBody);
  // 后续解析使用解码后的字符串
  List<dataRecord> records = parseJson(decodedBody);
}

2. 配置服务器响应头(推荐)

让服务器返回JSON时,在Content-Type头中明确指定字符编码:

Content-Type: application/json; charset=utf-8

配置后Flutter的http包会自动识别UTF8编码,无需手动解码,直接使用response.body即可正常解析中文。

验证

修改后重新运行代码,打印的响应内容应能正确显示"中國",后续解析到dataRecord的CHINESENAME字段也会正常展示中文。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 23:05:24