[PHP-dev 1527] mb_convert_encoding について

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

[PHP-dev 1527] mb_convert_encoding について

y.it@gmail
初めまして 本日mlに参加させて頂いた arannd と申します。
user の方がよろしければ投稿を移しますのでお願いします。

本題に入らさせていただきます。

今回 メール送信機能を新たに追加しようと思うのですが
携帯電話への受信も考慮しなくてはならないため 文字コードの変換処理を行いました。
defaultのcharsetは UTF8 としていて JISに変換するのに
以下の手順を踏み変換処理を行なっています。
utf-8→eucJP-win→jis
※そもそもこの手法も正しいのかわかりませんが現状これで行い動作確認はとれています。

上記のエンコードを行った所以下の文字で文字化けが発生しました。
No.

再現ソースコードを記載します。
<?php
setlocale(LC_ALL, 'ja_JP.UTF-8');
mb_language("ja");
mb_internal_encoding("UTF-8");
$test = mb_convert_encoding(mb_convert_encoding("No.", "eucJP-win",
"UTF-8"), "JIS", "EUC-JP");
file_put($test);

function file_put($msg){
        $fp = fopen("./hoge.txt", "a");
        fwrite($fp, $msg ."\n");
        fclose($fp);
}

動作環境は以下の通りです。
[Redhat]
cat /etc/redhat-release
  Red Hat Enterprise Linux Server release 5.7 (Tikanga)
php -v
  PHP 5.1.6 (cli) (built: Nov 13 2010 16:05:12)
  Copyright (c) 1997-2006 The PHP Group
  Zend Engine v2.1.0, Copyright (c) 1998-2006 Zend Technologies

php -info | grep LANG
  LANG => en_US.UTF-8
  _SERVER["LANG"] => en_US.UTF-8
  _ENV["LANG"] => en_US.UTF-8

出力されて欲しい値: $B-b (B
出力された値: $(D"q (B
(制御文字が実際には含まれています)

上記文字は機種依存文字というのは認識しております。
ただ、他の機種依存文字を試してみた所問題なく変換されているので
php5.1.6(mb_string)のバグでは?と思っております。

ただ下記の環境では正しく変換することが可能でした。
[Ubuntu]
cat /etc/lsb-release
  DISTRIB_ID=Ubuntu
  DISTRIB_RELEASE=11.10
  DISTRIB_CODENAME=oneiric
  DISTRIB_DESCRIPTION="Ubuntu 11.10"

php -v
  PHP 5.3.6-13ubuntu3.2 with Suhosin-Patch (cli) (built: Oct 13 2011 23:19:13)
  Copyright (c) 1997-2011 The PHP Group
  Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies

php -info | grep LANG
  LANG => en_US.UTF-8
  LANGUAGE => en_US:en
  _SERVER["LANG"] => en_US.UTF-8
  _SERVER["LANGUAGE"] => en_US:en
  _ENV["LANG"] => en_US.UTF-8
  _ENV["LANGUAGE"] => en_US:en

上記現象は ソースコード又は環境設定で回避は可能でしょうか?
それともphpのVersionを上げる他無いのでしょうか?

回避できる方法等ご存知の方が居らっしゃいましたらご教授願います。

※他に試した機種依存文字は以下の通りです。
[�][�][�][�][�]

_______________________________________________
PHP-dev mailing list
[hidden email]
http://ml.php.gr.jp/mailman/listinfo/php-dev
Loading...