teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

a

2016/04/01 12:51

投稿

mpyw
mpyw

スコア5223

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 "\xFF\xFE";
51
+ echo "\xFE\xFF";
52
52
 
53
53
  // 続けてCSVファイルの内容をUTF-16LEで出力
54
54
  // バッファリングをオフにしていれば最も効率のいい区切りでPHPが適当に分割出力してくれる

1

a

2016/04/01 12:51

投稿

mpyw
mpyw

スコア5223

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`