2010年5月 3日

[PHP-users 35185] Re:UTF-8 での escapeshellcmd の文字化けについて

小山です。

2010/5/2 <phpsenyo@xxxxx>:
> UTF-8のエンコードでescapeshellcmdを実行すると特定文字が文字化けします。
>
> 具体的には
> echo escapeshellcmd("あいうえお") ;
> とすると、「あいっ??お」となり、一文字ずつ確認していくと「う」が原因とな

> っていました。

再現する最小のコードで、問題点を明確にするのが良いと思います。
escapeshellcmd() は内部で php_mblen() を用いているので、これは多くの環境の
場合 OS の mblen() を呼び出します。つまり locale によって挙動が変わるということ
ですね。

以下のコードを UTF-8 で保存して実行すると、何が出力されますか?

<?php
$locale = setlocale(LC_ALL, 'ja_JP.UTF-8');
var_dump($locale);

$str = 'う';
var_dump($str, bin2hex($str));

$out = escapeshellcmd($str);
var_dump($out, bin2hex($out));

--
小山哲志@テックスタイル
koyama@xxxxx : http://techstyle.jp/
koyama@xxxxx : http://d.hatena.ne.jp/koyhoge/
_______________________________________________
PHP-users mailing list PHP-users@xxxxx
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3


投稿者 xml-rpc : 2010年5月 3日 20:50
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/95514
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。