回答編集履歴

2

冒頭の挨拶をコメントへ退避、その他若干の修正

2023/02/24 16:12

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -1,21 +1,3 @@
1
- お疲れ様、これ別の側面から原因をある程度知っていないと
2
- 正解にたどり着くのがかなり難しい部類の問題です。
3
-
4
- この時点で質問に来るのは良いタイミングであり、
5
- 回答者の私に通じるような質問文も書けてるし、非常に良い質問だと思います。
6
-
7
- ---
8
-
9
- まず、世の中の文字コードはすでにUTF-8を中心に回っています。
10
- 今どきShift-JISを使っているのはWindowsくらいのものです。
11
-
12
- ブラウザやJavaScriptファイル等が動いている環境、とりまく環境も全てUTF-8です。
13
- 一応大昔の日本語サイトにはShift-JISで書かれているものもあり
14
- ギリギリ文字化けせずに表示してくれますが、
15
- 内部のJavaScript変数世界はUTF-8環境で動いていたりします。
16
-
17
- ---
18
-
19
1
  ReactはいわゆるJSフレームワークと呼ばれるものです。
20
2
  HTMLテンプレートっぽいものを読み込ませてDOMツリーを作っている状態で
21
3
  React世界の変数の値を更新すると最新のDOMツリーに勝手に書き換わってくれる事が特徴です。
@@ -24,18 +6,28 @@
24
6
  色んなライブラリを肉付けしてくれる人は居ますが、
25
7
  Reactの仕事と文字コードの変換はかけ離れているのでそんなライブラリ作っている人も皆無でしょう。
26
8
 
27
- この辺の事情から「react upload 文字化け」「react csv 読み込み」等のワードで検索するのは無駄です。
28
- 今回のケースですと、JavaScriptの問題として扱い
9
+ ---
29
- DataTransfer.filesは何者やねんの切り口から追っていく事になるでしょう。
30
10
 
31
- ---
11
+ 次に基本的な文字コードの説明をします。
12
+ 世の中の文字コードはすでにUTF-8を中心に回っています。
13
+ 今どきShift-JISを使っているのはWindowsくらいのものです。
14
+
15
+ ブラウザやJavaScriptファイル等が動いている環境、とりまく環境も全てUTF-8です。
16
+ 一応大昔の日本語サイトにはShift-JISで書かれているものもありギリギリ文字化けせずに表示してくれますが、
17
+ 一応Webブラウザが対応しているというだけの話です。
18
+
19
+ 内部のJavaScript変数世界はUTF-8環境であり、Shift-JISを扱えて当然というわけではありません。
20
+
21
+ そういう事情があるので「react upload 文字化け」「react csv 読み込み」等のワードで検索するのは無駄です。
22
+ 今回のケースでは、JavaScript+文字コードの問題でしかないので
23
+ DataTransfer.filesは何者やねんの切り口から追っていく必要があります。
32
24
 
33
25
  `Array.from()`は配列っぽいけど配列ではないものに対して
34
26
  配列として動くよう強要する命令です。
35
27
  つまり`event.dataTransfer.files`は配列ではない?
36
28
 
37
29
  では何者なのか?
38
- MDNが結構詳しくて正確なのでそこで探してみましょう。
30
+ MDNが結構詳しくて正確なので探してみましょう。
39
31
 
40
32
  - [DataTransfer.files](https://developer.mozilla.org/ja/docs/Web/API/DataTransfer/files)
41
33
  - [FileList](https://developer.mozilla.org/ja/docs/Web/API/FileList)

1

ちょっと言い回しを変更

2023/02/24 12:37

投稿

miyabi-sun
miyabi-sun

スコア21158

test CHANGED
@@ -1,23 +1,32 @@
1
+ お疲れ様、これ別の側面から原因をある程度知っていないと
1
- まず、世文字コードは全てUTF-8です。
2
+ 正解にたどり着くがかなり難しい部類問題です。
2
- 今どきShift-JISを使っているのはWindowsくらいのものです。
3
3
 
4
- ブラウザやJavaScriptファイル等が動いている環境も全てUTF-8です。
5
- 一応大昔の日本語サイトのHTMLはShift-JIS等で書かれているものもあり、
6
- ギリギリ文字化けせず表示してくれますが
4
+ この時点で質問来るのは良いタイミングであり
7
- 内部JavaScriptはUTF-8環境で動いていたりします。
5
+ 回答者私に通じるような質問文も書けるし、非常に良質問だと思います。
8
6
 
9
7
  ---
10
8
 
9
+ まず、世の中の文字コードはすでにUTF-8を中心に回っています。
10
+ 今どきShift-JISを使っているのはWindowsくらいのものです。
11
+
12
+ ブラウザやJavaScriptファイル等が動いている環境、とりまく環境も全てUTF-8です。
13
+ 一応大昔の日本語サイトにはShift-JISで書かれているものもあり
14
+ ギリギリ文字化けせずに表示してくれますが、
15
+ 内部のJavaScript変数世界はUTF-8環境で動いていたりします。
16
+
17
+ ---
18
+
11
- そしてReactはいわゆるJSフレームワークと呼ばれるものです。
19
+ ReactはいわゆるJSフレームワークと呼ばれるものです。
12
20
  HTMLテンプレートっぽいものを読み込ませてDOMツリーを作っている状態で
13
21
  React世界の変数の値を更新すると最新のDOMツリーに勝手に書き換わってくれる事が特徴です。
14
22
 
15
23
  基本的にこれ以外の仕事はしません
16
24
  色んなライブラリを肉付けしてくれる人は居ますが、
17
- っくの昔に廃れたUTF-8以外の文字コードを扱う人も居ないでしょう。
25
+ Reactの仕事と文字コードの変換はかけ離れているのでそんなライブラリ作っている人も皆無でしょう。
18
26
 
19
- この辺の事情から「react upload 文字化け」「react csv 読み込み」等のワードで検索するのは全て無駄です。
27
+ この辺の事情から「react upload 文字化け」「react csv 読み込み」等のワードで検索するのは無駄です。
28
+ 今回のケースですと、JavaScriptの問題として扱い
20
- 今回のケースですと、DataTransfer.filesは何者やねんから追っていく事になるでしょう。
29
+ DataTransfer.filesは何者やねんの切り口から追っていく事になるでしょう。
21
30
 
22
31
  ---
23
32
 
@@ -33,7 +42,7 @@
33
42
  - [File](https://developer.mozilla.org/ja/docs/Web/API/File)
34
43
 
35
44
  なるほど、Fileの集まりなわけですね。
36
- そしてこれらのメソッドが使えるようです。
45
+ そしてFileにはこれらのメソッドがているようです。
37
46
 
38
47
  - text()→Promise<String>で取り出す
39
48
  - arrayBuffer()→Promise<ArrayBuffer>で取り出す
@@ -65,7 +74,7 @@
65
74
 
66
75
  JavaScriptやNode.jsではUTF-8以外扱えないから、
67
76
  配列に数値突っ込んでいる擬似的なShift-JISになりますよって言ってるわけです。
68
- (まぁ、この辺はJavaScriptがUTF-8でしか動かないと知らなければわからないと思います)
77
+ (まぁ、この辺の事情はJavaScriptがUTF-8でしか動かないと知らなければわからないと思います)
69
78
 
70
79
  バイナリデータというのは00-FFの羅列
71
80
  これを16進数に変換すると0-255の数字の配列と読み替える事が可能です。