Flutter解码TikTok API返回数据时特殊字符乱码问题求助
解决Flutter调用TikTok API时特殊字符与非英文文本乱码问题
问题原因
你遇到的乱码是因为API返回的UTF-8编码内容未被正确解码。Flutter的http包处理响应时,若响应头未明确指定charset=utf-8,会使用默认编码解析,导致非英文和特殊字符(如𝒦ℋ𝒜ℒℰ𝒟这类Unicode字符)出现乱码。
解决方案
手动通过UTF-8解码响应体的字节数据,再进行JSON解析,替换原来直接使用response.body的方式:
修改后的代码:
import 'dart:convert'; import 'package:http/http.dart' as http; // ... 其他代码保持不变 if (response.statusCode == 200) { // 手动用UTF-8解码响应字节 String decodedBody = utf8.decode(response.bodyBytes); var data = jsonDecode(decodedBody); print(data['description'][0]); }
补充说明
- 该API在官网测试正常是因为测试工具会自动识别并使用UTF-8解码响应内容
- 若后续API更新响应头,明确添加
Content-Type: application/json; charset=utf-8,则可以恢复使用response.body,但手动解码的方式兼容性更强
内容的提问来源于stack exchange,提问作者Syed Irfan Hussaini
相关产品推荐
相关产品推荐

