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

Flutter中如何将API返回的Unicode编码转为可读泰米尔语

解决Flutter中Unicode编码泰米尔语显示问题

方法1:修正Flask API的响应编码

Flask默认支持UTF-8,但建议显式设置响应的字符编码,避免转义问题:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/tamil-content')
def get_tamil_content():
    tamil_text = "நம்பிக்கை வைக்கும் பேசும் உறவு வைக்கும் அன்பு தான் கிடைக்கும்"
    return jsonify({"content": tamil_text}), 200, {'Content-Type': 'application/json; charset=utf-8'}

方法2:Flutter端解码Unicode转义序列

如果API返回的是带\u前缀的转义字符串,用以下两种方式处理:

方式A:借助jsonDecode自动解码

import 'dart:convert';

String encodedStr = r"\u0ba8\u0b9f\u0bc1\u0ba8\u0bbf\u0bb2\u0bc8 \u0b85\u0ba9\u0bcd\u0baa\u0bbf\u0ba9\u0bcd";
// 将字符串包装为JSON结构后解码
String decodedStr = jsonDecode('{"val": "$encodedStr"}')["val"];

方式B:手动编写解码函数

String decodeUnicode(String encoded) {
  return encoded.replaceAllMapped(RegExp(r'\\u([0-9a-fA-F]{4})'), (match) {
    int charCode = int.parse(match.group(1)!, radix: 16);
    return String.fromCharCode(charCode);
  });
}

// 使用示例
String encodedStr = r"\u0ba8\u0b9f\u0bc1\u0ba8\u0bbf\u0bb2\u0bc8 \u0b85\u0ba9\u0bcd\u0baa\u0bbf\u0ba9\u0bcd";
String decodedStr = decodeUnicode(encodedStr);

方法3:确保Flutter请求头部指定UTF-8

发送请求时,在请求头中明确声明接受UTF-8编码的响应:

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

Future<String> fetchContent() async {
  final response = await http.get(
    Uri.parse('https://your-api-url/tamil-content'),
    headers: {'Accept': 'application/json; charset=utf-8'},
  );
  if (response.statusCode == 200) {
    Map<String, dynamic> data = jsonDecode(response.body);
    return data['content'];
  }
  throw Exception('Failed to load content');
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 22:42:21