質問編集履歴

10

修正

2018/04/17 06:23

投稿

annderber
annderber

スコア98

test CHANGED
File without changes
test CHANGED
@@ -60,9 +60,9 @@
60
60
 
61
61
 
62
62
 
63
- // 文字コード変換
63
+ // 文字コード変換、データは必ず1次元配列
64
64
 
65
- mb_convert_variables('SJIS-win', 'UTF-8', $val);
65
+ mb_convert_variables('SJIS-win', 'UTF-8', $row);
66
66
 
67
67
 
68
68
 

9

加筆

2018/04/17 06:23

投稿

annderber
annderber

スコア98

test CHANGED
File without changes
test CHANGED
@@ -33,6 +33,12 @@
33
33
 
34
34
 
35
35
  $row = ['フィールド1', 'フィールド2'];
36
+
37
+
38
+
39
+ //フィールドごとの最大文字数分を取得
40
+
41
+ $row[0] = mb_substr($row[0], 0, 10);
36
42
 
37
43
 
38
44
 

8

修正

2018/04/17 06:20

投稿

annderber
annderber

スコア98

test CHANGED
File without changes
test CHANGED
@@ -46,7 +46,7 @@
46
46
 
47
47
       
48
48
 
49
-     // CS or RF → CSRF
49
+     // CR or LF → CRLF
50
50
 
51
51
  $val = convert_eol($val);
52
52
 
@@ -72,6 +72,14 @@
72
72
 
73
73
 
74
74
 
75
+ 3.環境
76
+
77
+ 〇クライアント
78
+
79
+  PHP・・・5.6
80
+
81
+  文字コード・・・UTF-8
82
+
75
83
 
76
84
 
77
85
  あまり詳細な処理を記述できないのですが、

7

追記

2018/04/17 05:52

投稿

annderber
annderber

スコア98

test CHANGED
File without changes
test CHANGED
@@ -22,6 +22,58 @@
22
22
 
23
23
 
24
24
 
25
+ 追記:
26
+
27
+ 1.CSV書き出し(一部抜粋)
28
+
29
+ ```php
30
+
31
+   $f = fopen($file_path, "w");
32
+
33
+
34
+
35
+ $row = ['フィールド1', 'フィールド2'];
36
+
37
+
38
+
39
+   // 文字コードや特定も文字を変換
40
+
41
+ array_walk_recursive($row, function(&$val, $key) {
42
+
43
+ //エスケープ
44
+
45
+ $val = str_replace('"', '""', $val);
46
+
47
+      
48
+
49
+     // CS or RF → CSRF
50
+
51
+ $val = convert_eol($val);
52
+
53
+ });
54
+
55
+
56
+
57
+ // 文字コード変換
58
+
59
+ mb_convert_variables('SJIS-win', 'UTF-8', $val);
60
+
61
+
62
+
63
+ // すべての項目をダブルクオートで囲んでファイルに書き出しをする
64
+
65
+ fwrite($f, '"'.implode('","',$row) . '"' . "\r\n");
66
+
67
+ ```
68
+
69
+ 2.ファイルアップロード
70
+
71
+ PHPのftp_nb_put関数でファイルをアップロードしています。転送モードはバイナリです。
72
+
73
+
74
+
75
+
76
+
25
77
  あまり詳細な処理を記述できないのですが、
26
78
 
27
79
  よろしくお願いいたします。

6

修正

2018/04/17 05:39

投稿

annderber
annderber

スコア98

test CHANGED
File without changes
test CHANGED
@@ -7,10 +7,6 @@
7
7
  csv内の「テストサーバー」という文字列が、アップロードされたcsv側では「テストサ?」という文字列になっています。csv内にある他のフィールドの文字列は正常に表示されるのですが、上記部分だけ文字化け(文字が欠け)てアップロードされてしまいます。このときftpの転送モードはバイナリにしています。
8
8
 
9
9
  また、この現象は毎回起こるのではなく、過去数件中1件だけしか起こっていません。
10
-
11
-
12
-
13
- csvアップロード時、転送モードをバイナリにすることでこのような現象が発生する可能性はありますでしょうか。または何か他の原因が考えられますでしょうか。
14
10
 
15
11
  文字コードはサーバー、クライアントともにSJISです。
16
12
 
@@ -22,6 +18,10 @@
22
18
 
23
19
 
24
20
 
21
+ csvアップロード時、転送モードをバイナリにすることでこのような現象が発生する可能性はありますでしょうか。また単純にFTPでcsvファイルをアップロードするとき、文字列の一部が欠けるなどの現象はありえるでしょうか。
22
+
23
+
24
+
25
25
  あまり詳細な処理を記述できないのですが、
26
26
 
27
27
  よろしくお願いいたします。

5

修正

2018/04/17 02:57

投稿

annderber
annderber

スコア98

test CHANGED
File without changes
test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
 
18
18
 
19
- 現状ローカルでcsvを出力した場合では文字化けは起こしていないようです。
19
+ 現状ローカルでcsvを出力した段階では文字化けは起こしていないようです。
20
20
 
21
21
  そもそもこの現象自体再現性がないので、なんとも言えないのですが。。。
22
22
 

4

修正

2018/04/17 02:46

投稿

annderber
annderber

スコア98

test CHANGED
File without changes
test CHANGED
@@ -12,10 +12,16 @@
12
12
 
13
13
  csvアップロード時、転送モードをバイナリにすることでこのような現象が発生する可能性はありますでしょうか。または何か他の原因が考えられますでしょうか。
14
14
 
15
- 文字コードはサーバー、クライアントともにSJISです
15
+ 文字コードはサーバー、クライアントともにSJISです
16
16
 
17
17
 
18
18
 
19
+ 現状ローカルでcsvを出力した場合では文字化けは起こしていないようです。
20
+
21
+ そもそもこの現象自体再現性がないので、なんとも言えないのですが。。。
22
+
23
+
24
+
19
- あまり処理の詳細を記述することが出来ないのですが、
25
+ あまり詳細な処理を記述できないのですが、
20
26
 
21
27
  よろしくお願いいたします。

3

修正

2018/04/17 02:41

投稿

annderber
annderber

スコア98

test CHANGED
File without changes
test CHANGED
@@ -12,6 +12,8 @@
12
12
 
13
13
  csvアップロード時、転送モードをバイナリにすることでこのような現象が発生する可能性はありますでしょうか。または何か他の原因が考えられますでしょうか。
14
14
 
15
+ 文字コードはサーバー、クライアントともにSJISです
16
+
15
17
 
16
18
 
17
19
  あまり処理の詳細を記述することが出来ないのですが、

2

修正

2018/04/17 02:37

投稿

annderber
annderber

スコア98

test CHANGED
File without changes
test CHANGED
File without changes

1

修正

2018/04/17 02:32

投稿

annderber
annderber

スコア98

test CHANGED
File without changes
test CHANGED
@@ -1,7 +1,3 @@
1
- お世話になります。
2
-
3
-
4
-
5
1
  お世話になります。
6
2
 
7
3