回答編集履歴

1

InputStream と Reader の違いの説明を追加

2020/04/06 07:07

投稿

kazuma-s
kazuma-s

スコア8224

test CHANGED
@@ -47,3 +47,29 @@
47
47
  }
48
48
 
49
49
  ```
50
+
51
+
52
+
53
+ **追記**
54
+
55
+ 「安」という漢字の文字コードは次のようになります。
56
+
57
+ Shit-JIS: 88 c0 (ファイル上のコード)
58
+
59
+ UTF-8: e5 ae 89 (ファイル上のコード)
60
+
61
+ Unicode: 5b89 (Java の char の内部コード)
62
+
63
+
64
+
65
+ InputStream の read() は 1バイトずつ読み込むので、それを 2バイトの char に
66
+
67
+ キャストすると、0088 00c0 または 00e5 00ae 0089 という文字列になります。
68
+
69
+ だから文字化けします。
70
+
71
+
72
+
73
+ Reader の read() は複数バイトを読み込んで 5b89 という 1文字に変換します。
74
+
75
+ だから文字化けしません。