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

質問編集履歴

4

ささあ

2021/10/07 00:43

投稿

larabeler
larabeler

スコア10

title CHANGED
@@ -1,1 +1,1 @@
1
- phpのCSV読み込み時の文字化について
1
+ 「修正」phpのCSV読み込み時の文字化について
body CHANGED
File without changes

3

$rows

2021/10/07 00:43

投稿

larabeler
larabeler

スコア10

title CHANGED
@@ -1,1 +1,1 @@
1
- phpのCSV書き込み時の文字化について
1
+ phpのCSV読み込み時の文字化について
body CHANGED
@@ -1,34 +1,16 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- CSV書き込み時に下記の記号が文字化けし「?」になります。
3
+ CSV読み込み時に下記の記号が文字化けし「?」になります。
4
4
  ```
5
5
 
6
6
  ```
7
7
 
8
-
9
- ### 該当のソースコード
8
+ ### 書き込み時ソースコード
10
-
11
- ```ここに言語名を入力
9
+ ```
12
- <?php
13
- $arr = array (
10
+ $rows = array (
14
11
  array('▶', '▶', '▶', '▶'),
15
12
  array('▶', '▶')
16
13
  );
17
-
18
- foreach ($arr as $line) {
19
- mb_convert_variables('SJIS-win', 'UTF-8', $line);
20
- $file->fputcsv($line);
21
- }
22
- ```
23
-
24
- ### 補足情報(FW/ツールのバージョンなど)
25
-
26
- ご教授お願いいたします。
27
-
28
-
29
-
30
- ### 解決済み
31
- ```
32
14
  $spec = "php://filter/write=convert.iconv.utf-8%2Futf-16le/resource=sample.csv";
33
15
  $file = new \SplFileObject($spec, 'wb');
34
16
  $file->setCsvControl("\t");
@@ -39,9 +21,8 @@
39
21
  }
40
22
  ```
41
23
 
24
+ ### 該当のソースコード
42
25
 
43
- ### 読み込み時文字化け
44
-
45
26
  ```
46
27
  $spec = "php://filter/read=convert.iconv.utf-16%2Futf-8/resource=sample.csv";
47
28
  $file = new \SplFileObject($spec, 'rb');
@@ -56,4 +37,10 @@
56
37
  foreach ($file as $row) {
57
38
  var_dump($row);
58
39
  }
59
- ```
40
+ ```
41
+
42
+
43
+
44
+ ### 補足情報(FW/ツールのバージョンなど)
45
+
46
+ ご教授お願いいたします。

2

sample.csv

2021/10/06 09:01

投稿

larabeler
larabeler

スコア10

title CHANGED
File without changes
body CHANGED
@@ -37,4 +37,23 @@
37
37
  foreach ($rows as $row) {
38
38
  $file->fputcsv($row);
39
39
  }
40
+ ```
41
+
42
+
43
+ ### 読み込み時文字化け
44
+
45
+ ```
46
+ $spec = "php://filter/read=convert.iconv.utf-16%2Futf-8/resource=sample.csv";
47
+ $file = new \SplFileObject($spec, 'rb');
48
+ $file->setFlags(
49
+ \SplFileObject::READ_CSV |
50
+ \SplFileObject::SKIP_EMPTY |
51
+ \SplFileObject::READ_AHEAD |
52
+ \SplFileObject::DROP_NEW_LINE
53
+ );
54
+ $file->setCsvControl("\t");
55
+
56
+ foreach ($file as $row) {
57
+ var_dump($row);
58
+ }
40
59
  ```

1

sas

2021/10/06 08:57

投稿

larabeler
larabeler

スコア10

title CHANGED
File without changes
body CHANGED
@@ -23,4 +23,18 @@
23
23
 
24
24
  ### 補足情報(FW/ツールのバージョンなど)
25
25
 
26
- ご教授お願いいたします。
26
+ ご教授お願いいたします。
27
+
28
+
29
+
30
+ ### 解決済み
31
+ ```
32
+ $spec = "php://filter/write=convert.iconv.utf-8%2Futf-16le/resource=sample.csv";
33
+ $file = new \SplFileObject($spec, 'wb');
34
+ $file->setCsvControl("\t");
35
+
36
+ $file->fwrite("\xEF\xBB\xBF");
37
+ foreach ($rows as $row) {
38
+ $file->fputcsv($row);
39
+ }
40
+ ```