ArtyomStepchuk Asked:2023-10-04 00:03:48 +0800 CST2023-10-04 00:03:48 +0800 CST 2023-10-04 00:03:48 +0800 CST XML 文件中的西里尔字母 772 使用 get 请求检索 XML 文件时出现问题。我无法更改该文件。您只能接收它。 http.get(Uri.http('www.cbr.ru', 'scripts/XML_daily.asp')).then((res) async { setState(() { xmlData = XmlDocument.parse(res.body); getDateOfUpdate(xmlData); }); }); 所有西里尔字符均已替换为象形文字(例如,Àçåðáàéäæàíñêèé màíàò)。 这是 XML 文件: 我怎样才能解决这个问题? xml 1 个回答 Voted Best Answer Oopss 2023-10-04T00:22:32+08:002023-10-04T00:22:32+08:00 我尝试访问网站www.cbr.ru,它诚实地说它提供了 windows-1251 编码 <?xml version="1.0" encoding="windows-1251"?> <ValCurs Date="04.10.2023" name="Foreign Currency Market"> <Valute ID="R01010"> <NumCode>036</NumCode> <CharCode>AUD</CharCode> <Nominal>1</Nominal> <Name>Австралийский доллар</Name> 从这里有两个输出,第一个是安装这样的包: https: //pub.dev/packages/windows1251并解码(尚未测试) import 'package:windows1251/windows1251.dart'; void main() { // >>> 'Привет!' print(windows1251.decode([207, 240, 232, 226, 229, 242, 33])); // >>> [207, 240, 232, 226, 229, 242, 33] print(windows1251.encode('Привет!')); } 第二种选择是联系网站的“镜像” https://www.cbr-xml-daily.ru/daily_utf8.xml,但这不是官方的(参见www.cbr-xml-daily.ru)这个镜像返回 utf8 格式的响应 import 'package:http/http.dart' as http; import 'dart:convert'; void main() { fetchData(); } void fetchData() async { var url = Uri.parse('https://www.cbr-xml-daily.ru/daily_utf8.xml'); var headers = { 'Accept-Encoding': 'gzip, deflate, sdch', 'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Referer': 'http://www.wikipedia.org/', 'Connection': 'keep-alive', 'Accept-Encoding': 'gzip', }; var response = await http.get(url,headers:headers); if (response.statusCode == 200) { var responseBody = utf8.decode(response.bodyBytes); print(responseBody); } else { print('Request failed with status: ${response.statusCode}'); } } <?xml version="1.0" encoding="utf-8"?><ValCurs Date="04.10.2023" name="Foreign Currency Market"><Valute ID="R01010"><NumCode>036</NumCode><CharCode>AUD</CharCode><Nominal>1</Nominal><Name>Австралийский доллар</Name><Value>62,6975</Value><VunitRate>62,6975</VunitRate></Valute><Valute ID="R01020A"><NumCode>944</NumCode><CharCode>AZN</CharCode><Nominal>1</Nominal><Name>Азербайджанский манат</Name><Value>58,3928</Value><VunitRate>58,3928 ....
我尝试访问网站www.cbr.ru,它诚实地说它提供了 windows-1251 编码
从这里有两个输出,第一个是安装这样的包: https: //pub.dev/packages/windows1251并解码(尚未测试)
第二种选择是联系网站的“镜像” https://www.cbr-xml-daily.ru/daily_utf8.xml,但这不是官方的(参见www.cbr-xml-daily.ru)这个镜像返回 utf8 格式的响应