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

Flutter中API返回孟加拉语显示乱码问题求助

解决Flutter中孟加拉语文本乱码问题

乱码本质是字符编码不匹配或字体不支持导致的,以下是针对性解决步骤:

1. 确认接口响应编码

先检查接口返回的Content-Type响应头,确认是否包含charset=utf-8。如果接口未指定编码,大概率用了ISO-8859-1这类不兼容非拉丁字符的编码。

  • 可以用命令行工具验证:curl -I 你的接口地址,查看输出中的Content-Type字段。

2. 强制用UTF-8解析响应

不管接口是否指定编码,手动用UTF-8解码响应字节是最稳妥的方式:

使用http包

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

Future<void> fetchBanglaData() async {
  final response = await http.get(Uri.parse('你的接口地址'));
  // 直接解码字节为UTF-8字符串
  final decodedBody = utf8.decode(response.bodyBytes);
  // 再解析JSON或处理文本
  final data = jsonDecode(decodedBody);
}

使用dio包

import 'package:dio/dio.dart';

final dio = Dio();

Future<void> fetchBanglaData() async {
  final response = await dio.get('你的接口地址', responseType: ResponseType.bytes);
  final decodedBody = utf8.decode(response.data as List<int>);
  final data = jsonDecode(decodedBody);
}

3. 配置孟加拉语支持字体

如果编码正确但仍显示方块/乱码,是系统默认字体不支持孟加拉语字符:

  1. 下载支持孟加拉语的字体(如Noto Sans Bengali、SolaimanLipi),放入项目assets/fonts目录;
  2. 在pubspec.yaml中注册字体:
flutter:
  fonts:
    - family: NotoSansBengali
      fonts:
        - asset: assets/fonts/NotoSansBengali-Regular.ttf
  1. 在Text组件中指定字体:
Text(
  data['bangla_text'],
  style: TextStyle(fontFamily: 'NotoSansBengali'),
)

4. 修复编码转换错误

如果已经拿到乱码字符串,尝试反向转换编码:

// 假设乱码是ISO-8859-1编码的UTF-8内容
String garbled = '¦®à¦¾à¦²à¦¿à¦à¦¾à¦¨à¦¾à¦§à§à¦¨';
List<int> bytes = latin1.encode(garbled);
String correctText = utf8.decode(bytes);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 08:56:08