回答編集履歴

1

検証コード追記

2021/01/24 07:18

投稿

hiroshihorie
hiroshihorie

スコア192

test CHANGED
@@ -1 +1,51 @@
1
1
  詳細は確認していないのですが。そのページのサーバのレスポンスヘッダを見るとContent-Type: text/html; charset=euc-jpとなっています。UTF-8ではない可能性があります。
2
+
3
+
4
+
5
+ **追記**
6
+
7
+ 質問者のコメントの通りUserAgentを指定するとUTF-8で返す仕様のサーバみたいですね。
8
+
9
+ 下記のコードで検証してみましたがしっかりタイトルを取得できました。
10
+
11
+
12
+
13
+ ```dart
14
+
15
+ final userAgent = 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_1_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.1 Mobile/15E148 Safari/604.1';
16
+
17
+ final client = http.Client();
18
+
19
+ try {
20
+
21
+ var response = await client.get(
22
+
23
+ Uri.parse("http://news4vip.livedoor.biz/archives/52385788.html"),
24
+
25
+ headers: {
26
+
27
+ 'User-Agent': userAgent,
28
+
29
+ },
30
+
31
+ );
32
+
33
+ print("response.headers: ${response.headers['content-type']}");
34
+
35
+ final decoded = await CharsetConverter.decode('UTF-8', response.bodyBytes);
36
+
37
+ final document = dom.Document.html(decoded);
38
+
39
+ print(document.querySelector('title')?.text);
40
+
41
+ } catch (error) {
42
+
43
+ print('error: $error');
44
+
45
+ } finally {
46
+
47
+ client.close();
48
+
49
+ }
50
+
51
+ ```