質問 > 管理機能 > (2.13.3)受注一覧のCSVダウンロードが文字化けする |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
yoshin |
投稿日時: 2017/1/10 11:23
対応状況: −−−
|
半人前 登録日: 2012/7/3 居住地: 投稿: 17 |
(2.13.3)受注一覧のCSVダウンロードが文字化けする お世話になっております。
---- ■環境 ・ECCUBE 2.13.3 ・プラグイン -カテゴリ別MV枠追加 2.13版 1.0 -クロネコヤマト カード・後払い一体型決済コア機能プラグイン 1.0 -クロネコヤマト カード・後払い一体型決済補助機能プラグイン 1.0 -のし対応 1.3.5 -配送先別 商品別 CSV ダウンロード 1.4 -UA版 Google Analytics eコマース対応 プラグイン 1.4 ・モジュール -クロネコヤマト カード・後払い一体型決済モジュール(2.13系) ・PHPバージョン PHP 5.3.3 ・DBバージョン MySQL 5.1.73-log ・サーバー Wadax 共用サーバ シルバー --- 表題の件、先日までは正常に動作していたのですが、ある時から文字化けしたCSVがダウンロードされるようになりました。 どうやらUTF-8でダウンロードされているようです。 配送先別 商品別 CSV ダウンロード 1.4でダウンロードされるCSVも同様でした。 上記プラグインで現れる「B2 CSVダウンロード」ボタンからのCSVや、「高度な設定」>「CSV出力設定」でのCSVは化けていません。 eccubeのエラーログには下記のような表示がありました。 --- (このエラーログはこの減少が起きるよりも前から継続的に出ているものです) 2017/01/10 09:29:29 /[パス]/html/admin/order/index.php Warning(E_USER_WARNING): 前方互換用メソッドが使用されました。 on [/[パス]/data/class/helper/SC_Helper_CSV.php(320)] from **.***.***.** 2017/01/10 09:29:29 /[パス]/html/admin/order/index.php Warning(E_USER_WARNING): 前方互換用メソッドが使用されました。 on [/[パス]/data/class/helper/SC_Helper_CSV.php(281)] from **.***.***.** --- (このエラーログは上のように継続的に出ているものではありませんが、この現象が起きる前にもでています) 2016/12/16 10:39:58 /[パス]/html/admin/system/editdb.php Warning(E_WARNING): array_search() expects parameter 2 to be array, object given on [/[パス]/data/class/pages/admin/system/LC_Page_Admin_System_Editdb.php(201)] from **.***.**.*** --- サーバのエラーログには特にそれらしきエラーはありませんでした。 このエラーが出る前に、下記ファイルを一部編集しました。 data/class_extends/helper_extends/SC_Helper_Purchase_Ex.php 長期休暇に備えて、発送目安の$start_dayを全て''にしていたのを、元の通り数値を入力しました。 しかしながら、この編集は今まで何度も行っており、今まではこのような現象は出ておりませんでしたので、直接の関連性はあまりないかもしれないと思っております。 「mb_convert_encoding」を文字列として含むファイルは触っておりません。 なにか特定の注文が影響を及ぼしているのかもしれないと思いましたが、エラーが出る以前のCSVをダウンロードしても同様でした。 何が原因か、ご教授いただければ幸いです。 以上、よろしくお願い致します。 |
468 |
投稿日時: 2017/1/10 12:20
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: (2.13.3)受注一覧のCSVダウンロードが文字化けする SC_Helper_CSV.php内を何か変更されていないでしょうか?
362行目付近の以下の記述でCSVファイル出力時にエンコードを変換していると思われますが、ここは通っていますか? stream_filter_append($fp, 'convert.iconv.utf-8/cp932'); ここを通っていないとUTF-8のままで出力されるのではないかと思います。
|
yoshin |
投稿日時: 2017/1/10 13:27
対応状況: −−−
|
半人前 登録日: 2012/7/3 居住地: 投稿: 17 |
Re: (2.13.3)受注一覧のCSVダウンロードが文字化けする 468様
ご返信ありがとうございます。 確認をいたしましたが、こちらも編集した形跡はありませんでした。 SC_Helper_CSV_Ex.phpも同様です。 初歩的な質問で申し訳ございませんが、stream_filter_append($fp, 'convert.iconv.utf-8/cp932');を通っているか否かの確認はどのようにすればよろしいでしょうか。 お手数をおかけし申し訳ございません。よろしくお願いいたします。 |
468 |
投稿日時: 2017/1/10 17:33
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: (2.13.3)受注一覧のCSVダウンロードが文字化けする 私の場合は、手っ取り早く
print "a"; exit; を前か後ろの行に記述して、 CSVダウンロードを実行し、画面にaだけが表示された状態になれば処理が通っていると判断しています。 多分、CSVダウンロード時のみ処理が強制的に止まると思います。 稼働中のサイトの場合は、上記のような記述で処理を止めるのではなく、ログの出力をしたほうが安全かと思います。 GC_Utils_Ex::gfPrintLog('メッセージ'); 上記の記述でsite.logにメッセージを出力できるようです。
|
yoshin |
投稿日時: 2017/1/11 10:00
対応状況: −−−
|
半人前 登録日: 2012/7/3 居住地: 投稿: 17 |
Re: (2.13.3)受注一覧のCSVダウンロードが文字化けする 468様
具体的にアドバイスを下さり、ありがとうございました。 早速、テストを行ってみたところ、「a」のみになりました。 (より簡単そうな前者のアドバイスで対応させていただきました) -------- public static function &fopen_for_output_csv($filename = 'php://output') { $fp = fopen($filename, 'w'); stream_filter_append($fp, 'convert.iconv.utf-8/cp932'); //ここから print "a"; exit; //ここまで stream_filter_append($fp, 'convert.eccube_lf2crlf'); return $fp; } -------- ここを通っているのに、ファイルが変換されていない、と言うのは、どのような状況が考えられますでしょうか。 素人考えですが、特にファイルを編集していないのなら、DBのデータ容量が膨らんで正常な動作をしなくなったかなどと思ったのですが、MySQLのdtb_orderも1200件ほどで、クエリの実行時間もほぼ0秒だったので、それでもなさそうに思います。 念のため、PHPMyAdminで警告の出ていた状態変数も列挙いたします。 ------- Aborted clients 167 Aborted connects 9.4 k Binlog cache disk use 610 Created tmp disk tables 4.2 M Handler read rnd 990.6 M Handler read rnd next 33.6 G Innodb buffer pool pages dirty 1 Innodb buffer pool reads 148.1 k Innodb row lock time avg 13 Innodb row lock time max 5.4 k Innodb row lock waits 656 Opened tables 856.9 k Qcache lowmem prunes 11.3 M Select full join 99.6 k Slow queries 436 Sort merge passes 151 Table locks waited 2.2 k ------- この値の意味の理解はできていないので、的外れであれば申し訳ございません。 なにか解決の糸口となりますでしょうか。 申し訳ございませんが、お知恵をいただければありがたいです。 よろしくお願いいたします。 |
yoshin |
投稿日時: 2017/1/12 9:39
対応状況: −−−
|
半人前 登録日: 2012/7/3 居住地: 投稿: 17 |
Re: (2.13.3)受注一覧のCSVダウンロードが文字化けする 追記いたします。
-------- print "a"; exit; -------- を -------- stream_filter_append($fp, 'convert.eccube_lf2crlf'); -------- の後ろに持っていった場合でも、同様に「a」が表示されて、ファイルは出力されませんでした。 両方共ちゃんと通っているということかと思います。 -------- return $fp; -------- の後ろに持っていった場合は、文字化けファイルが出力され、「a」は表示されませんでした。 http://php.net/manual/ja/function.stream-filter-append.php ↑をみる限りでは、この関数は入力が適切であればファイルを、不適切であればfalseを返すと記載があったので、この関数に受け渡される値については問題がないということかと認識しています。 PHPのバージョンも再確認いたしましたが、たしかに5.3.3でしたので、stream_filter_appendは動作する環境かと思われます。 stream_filter_appendについて色々と検索してみたのですが、通っているのに動作しないという状況の解決に役立つ情報を見つけることができず… ご多忙のところ、申し訳ございません。ご教授のほど、よろしくお願いいたします。 |
468 |
投稿日時: 2017/1/12 9:55
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: (2.13.3)受注一覧のCSVダウンロードが文字化けする 1点確認なのですが、ダウンロードされたCSVは、1行目のヘッダー、2行目以降のデータ行ともに文字化けされいるという事でよろしいでしょうか?
ダウンロードされたCSVがUTF-8というのは、どのように確認されたのでしょうか?
|
yoshin |
投稿日時: 2017/1/12 10:44
対応状況: −−−
|
半人前 登録日: 2012/7/3 居住地: 投稿: 17 |
Re: (2.13.3)受注一覧のCSVダウンロードが文字化けする 468様
ご返信ありがとうございます。 文字化けはヘッダ行・データ行共にです。 また、文字コードの確認は、化けたファイルをTerapadで開いて確認いたしました。 具体的には、「UTF-8N」改行コードは「CRLF」とありました。 こんなイメージです→http://uxmilk.jp/47131 …今気づいたのですが、下記コードが改行コードを変えるためのものであるならば、これについては機能しているということになりますね… --- stream_filter_append($fp, 'convert.eccube_lf2crlf'); --- お忙しい中、申し訳ございません。よろしくお願いいたします。 |
468 |
投稿日時: 2017/1/12 12:00
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: (2.13.3)受注一覧のCSVダウンロードが文字化けする Terapadで開いている時は、csvの文字自体は文字化けせずに、正しく表示されていますか?
その時も文字化けしているようであれば、文字コード変換に失敗して、テキストデータが壊れていると思います。 この現象に気付かれたのは、エクセルで開いた時等でしょうか?
|
yoshin |
投稿日時: 2017/1/12 13:13
対応状況: −−−
|
半人前 登録日: 2012/7/3 居住地: 投稿: 17 |
Re: (2.13.3)受注一覧のCSVダウンロードが文字化けする 468様
Terapadで開いたときも、文字化け状態です。 Terapad上で開くと、はじめに「Null文字を含むファイルです。〜」という警告が出て、そのまま開くと、化けた状態のテキストが表示されます。(この時、文字コードはUTF-8Nと表示されています) これを、Terapad上で「SHIFT-JIS」に文字コード指定再読込をすると、正しく表示されます。(ファイルの冒頭に「・ソ」という謎の文字列が加わっていますが…) エラーに気づいたのは、仰る通りエクセルで開いたときです。 ただ、Terapadで開いたときとエクセルで開いたときには、化け方が違います。 --- Terapad(UTF-8N):???¶??? Excel:ԍ Terapad(SHIFT-JIS):・ソ注文番号 --- 文字コード変換の失敗と伺い、同様の事例がないか色々と検索してみたのですが…すみません、(今のところ)見つけることはできていません。 解決の糸口となりますでしょうか。 ご多忙の中、申し訳ございません。よろしくお願いいたします。 |
(1) 2 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |