Fulutter・Dart初心者です。
dartでdioとshift_jisパッケージを使用してhttpを取得しています。
取得対象のページは、Shift_JISのページです。
取得直後の日本語部分 > <title>�N���l�R���}�g�̉ו����₢���킹�V�X�e��</title>
これはブラウザでエンコーディングをUTF8に指定した時と同じになります。
よって、UTF8として取得していると判断しています。
それを、 shift_jisパッケージにてShift_JISのデコードをすると、下記のようになります。
デコード後の日本語部分 > <title>�N���l�R���}�g� ユ����「���ケ�V�X�e��</title>
上記のようにうまく文字コードの変換をすることができません。
他にもcharset_converterパッケージを使ってみましたが日本語に変換できません。
どこか手順が間違っているのでしょうか?
yaml
1dependencies: 2 dio: ^3.0.8 3 shift_jis: ^0.3.0
dart
1import 'package:dio/dio.dart'; 2import 'package:shift_jis/shift_jis.dart'; 3import 'dart:typed_data'; 4 5class http_client { 6 7 var dio = Dio(); 8 9 http_client(); 10 11 Future<String> getHttp() async { 12 13 try { 14 Response response; 15 url = "https://toi.kuronekoyamato.co.jp/cgi-bin/tneko"; 16 response = await dio.get(url); 17 //デコード 18 String responseBody = response.data; 19 List<int> list = responseBody.codeUnits; 20 Uint8List bytes = Uint8List.fromList(list); 21 responseBody = await shiftJisDecode(bytes); 22 return responseBody; 23 } catch (e) { 24 print(e); 25 return e; 26 } 27 } 28} 29 30Future<Uint8List> shiftJisEncode(String text) async { 31 final encoded = await ShiftJis.encode(text); 32 return encoded; 33} 34 35Future<String> shiftJisDecode(Uint8List encoded) async { 36 final decoded = await ShiftJis.decode(encoded); 37 return decoded; 38}
検索しながら二日悩みましたが解決できません。
どんなことでもいいので助けていただけないでしょうか。よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。