お世話になります。
現在、サーバ間でftpによるcsvアップロード処理を行っているのですが、
csv内の「テストサーバー」という文字列が、アップロードされたcsv側では「テストサ?」という文字列になっています。csv内にある他のフィールドの文字列は正常に表示されるのですが、上記部分だけ文字化け(文字が欠け)てアップロードされてしまいます。このときftpの転送モードはバイナリにしています。
また、この現象は毎回起こるのではなく、過去数件中1件だけしか起こっていません。
文字コードはサーバー、クライアントともにSJISです。
現状ローカルでcsvを出力した段階では文字化けは起こしていないようです。
そもそもこの現象自体再現性がないので、なんとも言えないのですが。。。
csvアップロード時、転送モードをバイナリにすることでこのような現象が発生する可能性はありますでしょうか。また単純にFTPでcsvファイルをアップロードするとき、文字列の一部が欠けるなどの現象はありえるでしょうか。
追記:
1.CSV書き出し(一部抜粋)
php
1 $f = fopen($file_path, "w"); 2 3 $row = ['フィールド1', 'フィールド2']; 4 5 //フィールドごとの最大文字数分を取得 6 $row[0] = mb_substr($row[0], 0, 10); 7 8 // 文字コードや特定も文字を変換 9 array_walk_recursive($row, function(&$val, $key) { 10 //エスケープ 11 $val = str_replace('"', '""', $val); 12 13 // CR or LF → CRLF 14 $val = convert_eol($val); 15 }); 16 17 // 文字コード変換、データは必ず1次元配列 18 mb_convert_variables('SJIS-win', 'UTF-8', $row); 19 20 // すべての項目をダブルクオートで囲んでファイルに書き出しをする 21 fwrite($f, '"'.implode('","',$row) . '"' . "\r\n");
2.ファイルアップロード
PHPのftp_nb_put関数でファイルをアップロードしています。転送モードはバイナリです。
3.環境
〇クライアント
PHP・・・5.6
文字コード・・・UTF-8
あまり詳細な処理を記述できないのですが、
よろしくお願いいたします。

