我正在使用Flutter构建移动应用。
我需要从服务器获取一个包含日语文本的json
文件。返回的json
内容的一部分如下:
{
"id": "egsPu39L5bLhx3m21t1n",
"userId": "MCetEAeZviyYn5IMYjnp",
"userName": "巽 裕亮",
"content": "フルマラソン完走に対して2018/05/06のふりかえりを行いました!"
}
在Postman或Chrome上尝试相同的请求会得到预期的结果(输出中的日文字符会被正确呈现)。
但是当使用以下Dart代码片段获取数据时:
import 'dart:convert';
import 'package:http/http.dart' as http;
//irrelevant parts have been omitted
final response = await http.get('SOME URL',headers: {'Content-Type': 'application/json'});
final List<dynamic> responseJson = json.decode(response.body)
print(responseJson);
print
语句在logcat中的结果为
{
id: egsPu39L5bLhx3m21t1n,
userId: MCetEAeZviyYn5IMYjnp,
userName: å·½ è£äº®,
content: ãã«ãã©ã½ã³å®èµ°ã«å¯¾ãã¦2018/05/06ã®ãµãããããè¡ãã¾ããï¼
}
请注意,仅日文字(content
键的值)会变成乱码,其他非日语值仍然可以正确显示。
两点需要注意:
- 如果我尝试通过
Text()
在我的应用程序中显示这些日文文本,则会呈现相同的乱码,因此这不是Android Studio的logcat的错误。 - 如果我使用
Text('put some Japanese text here directly')
(例如:Text('睡眠')
),Flutter将正确显示它,因此不是Text
小部件弄乱了日语字符。