回答編集履歴
2
a
answer
CHANGED
@@ -48,7 +48,7 @@
|
|
48
48
|
header('Content-Disposition: attachment; filename="data.csv"');
|
49
49
|
|
50
50
|
// UTF-16(LE)のBOMを出力
|
51
|
-
echo "\
|
51
|
+
echo "\xFE\xFF";
|
52
52
|
|
53
53
|
// 続けてCSVファイルの内容をUTF-16LEで出力
|
54
54
|
// バッファリングをオフにしていれば最も効率のいい区切りでPHPが適当に分割出力してくれる
|
1
a
answer
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
そもそもShift_JISだと表せる文字がUTF-8より減ってしまい,**範囲外の文字は`?`に化けてしまう**ので,以下のようにUnicodeを取り扱えるBOMつきのCSVを用いるべきです.
|
2
2
|
|
3
|
+
【追記】
|
4
|
+
|
5
|
+
> CSVにSJISで表現できない文字はありません。
|
6
|
+
|
7
|
+
ごめんなさい見てませんでした…
|
8
|
+
|
3
9
|
- UTF-8なら `0xEF` `0xBB` `0xBF`
|
4
10
|
- **UTF-16のLE (Little Endian)なら `0xFE` `0xFF` (Mac版のExcelはこれしか受け付けない)**
|
5
11
|
- UTF-16のBE (Big Endian)なら `0xFF` `0xFE`
|