[PHP-users 14049] exec関数の出力結果の最後の文字が化ける

Kiyoshi Sawada php-users@php.gr.jp
Mon, 17 Mar 2003 21:38:20 +0900


こんばんは、沢田です。

以下のSolaris環境、テストプログラムで、SJISファイルを出力する
exec関数の出力結果の最後の文字が化けます。
ボケていて、設定がおかしいかもしれませんので、ご教授ねがいます。

exec.cのソースはまだ見ていませんが、ひょっとしてSolarisによくある、
unsigned char 関連の不具合かもしれません。

とりあえずの対処は、下記(4)のように qkcでフィルタリングしています。

よろしくお願いいたします。


☆環境
SunOS 5.8 Generic_108528-16 sun4u
PHP Version 4.3.1 Apache/1.3.27 

./configure
  --with-apxs=/usr/local/apache/bin/apxs \
  --enable-zend-multibyte \
  --enable-mbstr-enc-trans \
  --enable-mbstring \
  --with-pear \
  --enable-memory-limit

magic_quotes_gpc  Off
safe_mode         Off

mbstring
Multibyte Support  enabled  
Japanese support  enabled  

mbstring.detect_order           auto
mbstring.encoding_translation   On
mbstring.func_overload          0
mbstring.http_input             auto
mbstring.http_output            EUC-JP
mbstring.internal_encoding      EUC-JP
mbstring.language               Japanese
mbstring.script_encoding        EUC-JP
mbstring.substitute_character   auto


☆SJISファイル a.txt
-------------------------
美乳美 乳美[eof]
-------------------------

以下、テストプログラムと出力結果です。
--------------------------------------------------------
<html><head>
<meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">
</head><PRE>
<?php
$fp = fopen("./a.txt" , "r") ;
  $a = fgets($fp) ;
  $a = mb_convert_encoding($a, "EUC-JP", "auto") ; 
  echo "(1):  $a<BR>" ;            // 出力結果 正常
                                   // (1):  美乳美 乳美
fclose($fp) ;

$com  = "cat a.txt" ;
$str = exec( $com , $ret ,$sts ) ;
$str = mb_convert_encoding($str, "EUC-JP", "auto");
  echo "(2):  $str <BR>" ;        // 出力結果 最後の美が化ける
                                  // (2):  美乳美 乳

$com  = "LANG=ja_JP.PCK;export LANG;cat a.txt" ;
$str = exec( $com , $ret ,$sts ) ;
$str = mb_convert_encoding($str, "EUC-JP", "auto");
 echo "(3):  $str <BR>" ;        // 出力結果 最後の美が化ける
                                 // (3):  美乳美 乳

$com = "cat a.txt | qkc -I -O -is -e" ;
$str = exec( $com ,$ret , $sts ) ;
  echo "(4):  $str <BR>" ;        // 出力結果 正常
                                  // (4):  美乳美 乳美

$str = `cat a.txt` ;
$str = mb_convert_encoding($str, "EUC-JP", "auto");
 echo "(5):  $str <BR>" ;        // 出力結果 正常
                                 // (5):  美乳美 乳美

?>
</PRE>
</body></html>
--------------------------------------------------------

-- 
沢田 潔 <sawa@nagoya2.jrc.or.jp>