バージョン選択

フォーラム

メニュー

オンライン状況

66 人のユーザが現在オンラインです。 (56 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 66
もっと...

サイト内検索

質問 > 管理機能 > (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のままで出力されるのではないかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

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にメッセージを出力できるようです。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

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というのは、どのように確認されたのでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

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の文字自体は文字化けせずに、正しく表示されていますか?
その時も文字化けしているようであれば、文字コード変換に失敗して、テキストデータが壊れていると思います。
この現象に気付かれたのは、エクセルで開いた時等でしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

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 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は88,307名です
総投稿数は109,692件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1568
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.