バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > 商品マスタ確認画面の商品カテゴリで文字化け

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
pantacle
投稿日時: 2011/3/31 7:48
対応状況: −−−
長老
登録日: 2009/6/29
居住地: 富山
投稿: 242
商品マスタ確認画面の商品カテゴリで文字化け
商品カテゴリ名に「格」など"A0"を含む文字を使用した場合、
商品マスタ確認画面の商品カテゴリで文字化けします。

Smartyのstrip修飾子の処理内で、preg_replaceの正規表現に
uフラグが無いため"A0"が空白と誤判定されている事は突き止めました。

strip修飾子を取ってしまえば差し当たり解決はするのですが、
正しい対処方法をご存知頂けないでしょうか。


----------------
pantacle
http://pantacle.net/

shutta
投稿日時: 2011/3/31 12:30
対応状況: −−−
仙人
登録日: 2010/2/4
居住地: 関西
投稿: 835
Re: 商品マスタ確認画面の商品カテゴリで文字化け
ためしに「規格格格格格」というカテゴリを作成して試してみましたが、こちらでは文字化けしませんでした。

テスト用に、


<?php

function smarty_modifier_strip($text, $replace = ' ')
{
    return preg_replace('!\s+!', $replace, $text);
}

function to_hex($str) {
    $hex_str = '';
    for ($i=0; $i < strlen($str); ++$i) {
        $char = substr($str, $i, 1);
        $hex_str .= dechex(ord($char));
    }

    return $hex_str;
}


$a = '格';

$b = smarty_modifier_strip($a);

var_dump(to_hex($a));
var_dump(to_hex($b));

?>


というコードを作って、実行してみましたが、


string(6) "e6a0bc"
string(6) "e6a0bc"


と、stripの前後でA0による問題はありませんでした。

pantacleさんの環境では、テストコードでも問題ありますでしょうか?


----------------

リゾート会員権(エクシブ等)の売買・仲介

pantacle
投稿日時: 2011/3/31 17:55
対応状況: −−−
長老
登録日: 2009/6/29
居住地: 富山
投稿: 242
Re: 商品マスタ確認画面の商品カテゴリで文字化け
わざわざテストコードまで書いて頂いてありがとうございます。

自分でも同じような実験をしていたのですが、
EC-CUBEの外ではOK、EC-CUBEの中ではNGだったので、
ついSmartyが悪いと決めつけてました。

冷静になって絞り込んでみたところ、
SC_Initial.php内の setlocale(LC_ALL, LOCALE); の前後で
結果が異なり、これが原因みたいなのですが、理由がさっぱりです。

いまいちすっきりしませんが、今回は開発環境のMacでの事なので、
とりあえずは良しと言う事にして置こうかと。


----------------
pantacle
http://pantacle.net/

shutta
投稿日時: 2011/3/31 19:24
対応状況: −−−
仙人
登録日: 2010/2/4
居住地: 関西
投稿: 835
Re: 商品マスタ確認画面の商品カテゴリで文字化け
引用:

冷静になって絞り込んでみたところ、
SC_Initial.php内の setlocale(LC_ALL, LOCALE); の前後で
結果が異なり、これが原因みたいなのですが、理由がさっぱりです。


setlocale(LC_ALL, LOCALE);の前後で、どの処理(関数)の結果が異なってますかね?
前後というのが、SC_Initial.phpのphpconfigInit()全体を含むのであれば、ここで文字コード周りの設定を行なっているようなので、setlocale以外の部分とか影響してないですかね?


原因とは別に、根本的にカテゴリ名のstrip修飾子はそもそも不要な気がしてきました。

該当部分は、

<!--{$arrCatList[$key]|strip|sfTrim}-->

となっていますが、strip修飾子は、全テンプレート中ここでしか使用されていませんね。
複数行のHTMLコード等を詰めるために利用する修飾子だと思うので、カテゴリ名への適用は不要な気がしますね。


----------------

リゾート会員権(エクシブ等)の売買・仲介

pantacle
投稿日時: 2011/4/1 9:21
対応状況: −−−
長老
登録日: 2009/6/29
居住地: 富山
投稿: 242
Re: 商品マスタ確認画面の商品カテゴリで文字化け
> setlocale(LC_ALL, LOCALE);の前後で、どの処理(関数)の結果が異なってますかね?

shuttaさんのテストコードを上記行の前後に割り込ませると、結果が変わりました。
環境依存なのでしょうが、いま原因を追及していられる時間が無くて....


> となっていますが、strip修飾子は、全テンプレート中ここでしか使用されていませんね。
> 複数行のHTMLコード等を詰めるために利用する修飾子だと思うので、カテゴリ名への適用は不要な気がしますね。

strip修飾子(|strip)は空白を詰めてるだけですね。
不要っぽいので、今回はコレを無くして対処としました。


----------------
pantacle
http://pantacle.net/

shutta
投稿日時: 2011/4/1 10:33
対応状況: −−−
仙人
登録日: 2010/2/4
居住地: 関西
投稿: 835
Re: 商品マスタ確認画面の商品カテゴリで文字化け
引用:

pantacleさんは書きました:
> setlocale(LC_ALL, LOCALE);の前後で、どの処理(関数)の結果が異なってますかね?

shuttaさんのテストコードを上記行の前後に割り込ませると、結果が変わりました。
環境依存なのでしょうが、いま原因を追及していられる時間が無くて....


LOCALEの定義には、"ja_JP.UTF-8"はデフォルトの設定がされているのでしょうか?
条件が分かれば、こちらでも可能であれば追求してみたいです。

引用:

> となっていますが、strip修飾子は、全テンプレート中ここでしか使用されていませんね。
> 複数行のHTMLコード等を詰めるために利用する修飾子だと思うので、カテゴリ名への適用は不要な気がしますね。

strip修飾子(|strip)は空白を詰めてるだけですね。
不要っぽいので、今回はコレを無くして対処としました。


下記、改善提案をしておきました。

#1219 商品管理>商品登録確認画面の商品カテゴリにstrip修飾子は不要だと思う
http://svn.ec-cube.net/open_trac/ticket/1219

経過を見て問題なさそうならstrip修飾子を外すようにできればと思います。


----------------

リゾート会員権(エクシブ等)の売買・仲介

AMUAMU
投稿日時: 2011/4/5 10:47
対応状況: −−−
登録日: 2009/5/2
居住地: 東京都
投稿: 2712
Re: 商品マスタ確認画面の商品カテゴリで文字化け
setlocaleの指定に問題があることが分かりましたので別途チケットを立てました。
http://svn.ec-cube.net/open_trac/ticket/1241


----------------
EC-CUBE公式エヴァンジェリスト
EC-CUBEインテグレートパートナー (株)スピリット・オブ
移転・拡張・高速化・問題解決
各種カスタマイズ・支援依頼承ります。

[url=h

shutta
投稿日時: 2011/4/13 1:12
対応状況: −−−
仙人
登録日: 2010/2/4
居住地: 関西
投稿: 835
Re: 商品マスタ確認画面の商品カテゴリで文字化け
引用:


下記、改善提案をしておきました。

#1219 商品管理>商品登録確認画面の商品カテゴリにstrip修飾子は不要だと思う
http://svn.ec-cube.net/open_trac/ticket/1219

経過を見て問題なさそうならstrip修飾子を外すようにできればと思います。


間があいてしましましたが、上記チケットにてstrip修飾子は不要と判断されましたので、

http://svn.ec-cube.net/open_trac/changeset/20832

にてstrip修飾子を削除しました。


----------------

リゾート会員権(エクシブ等)の売買・仲介

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


 



ログイン


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

統計情報

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

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2313
5
umebius
2085
6
yuh
1819
7
h_tanaka
1638
8
red
1570
9
mcontact
1285
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.