バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

バグ報告 > 管理機能 > 【2.11.4】商品登録CSVでシステムエラーが発生

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
casa
投稿日時: 2012/3/2 16:55
対応状況: −−−
長老
登録日: 2011/10/3
居住地:
投稿: 210
【2.11.4】商品登録CSVでシステムエラーが発生
お世話になります。
バグというわけではないと思うのですが、同事象に困っている方もいるかもしれないと思い、こちらに投稿させて頂きます。

以下の環境で商品登録CSVアップロード時にシステムエラーが発生しました。
----------------------
EC-CUBE: 2.11.4
DB: PostgreSQL(EUC-JP)
※DBはEUC-JP以外利用不可
----------------------

CSVファイルをShift-JIS形式でアップロードしたときにエラーが発生し、UTF-8形式でアップロードすると正常に処理されました。
データに「〜」を含む場合に発生しました。

今回の場合、以下のように文字コードが変換されていきます。

1.CSVアップロード時にEC-CUBEでShift-JISからUTF-8に変換
2.DB登録時にMDB2内でUTF-8からEUC-JPに変換

原因は、上記1の変換時の「〜」等の扱いに問題があることだと思います。
Shift-JISのCSVをアップロードすると、1で「〜」が通常とは異なる字体の「〜」に変換されてしまいます。
DBがUTF-8の場合はそれでも登録はうまくいきますが、EUC-JPの場合、その文字に該当する文字がないため、
DB登録が失敗してシステムエラーとなります。

DBがUTF-8の場合でも、本来意図した字体ではないのが気になりました。


今回はSC_Utils.php:894行目(sfEncodeFile()内)を以下のように修正して対応しました。
- $line = mb_convert_encoding($line, $enc_type, 'auto');
+ $line = mb_convert_encoding($line, $enc_type, 'ASCII,JIS,UTF-8,eucjp-win,sjis-win,EUC-JP,SJIS');

http://php.net/manual/ja/function.mb-convert-encoding.php によると、
「"auto" は、"ASCII,JIS,UTF-8,EUC-JP,SJIS" に展開される」
とのことだったので、EUC-JP、SJISそれぞれよりも先にWindows拡張用のコードを指定しています。


パラメータ設定のCHAR_CODEの値を"UTF-8"から"EUC-JP"に変更すればよいとも思ったのですが、
そうするとSC_Initial.phpでmbstring系の設定値も全てEUCに変わってしまうようなのでこれは実施しませんでした。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は89,164名です
総投稿数は110,046件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1650
8
red
1570
9
mcontact
1299
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
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.