- 締切済み
文字操作をしたjisコードをシフトjisに変えたい
携帯メールをCGIで受け取って処理するスクリプトを書いているのですが 文字コードの処理について行き詰っています。 $str = " $B$F$9$H (B"; #jisコードで"てすと" として、この文字列をjcode.pmでシフトjisに変換したいのですが $body = Jcode::convert($str, 'sjis'); このようにしても$bodyの中身は" $B$F$9$H (B"のまま変わりません。 MIME::parserでうけとったjisコードの文字列はちゃんと変換されるのでjcode.pmに問題はないと思われますが、 文字列操作をして変数に入れるとMIME::parserで受け取った場合とおなじ内容でもデコードされないとゆう結果になります。 なにか根本的に違うのでしょうか… スペースを省いてみたり $body = Jcode::convert($str, 'sjis','jis'); としてみたりしたのですが まったくダメでした。 ちょっとしたアドバイスだけでもいいのでよろしくお願いします。 あとお金がかかってもよいので、そういった問題を解決できそうなサイトなどがあれば紹介していただければと思います。 よろしくお願いします。m(__)m
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- kmee
- ベストアンサー率55% (1857/3366)
> スペースを省いてみたり って、どこのことです? > $str = " $B$F$9$H (B"; #jisコードで"てすと" の $Bの前と(Bの前でしょうか? だとしたら、スペースなのが間違いです。 本来入るべきなのは ESC (ASCIIコード 0x1B)です。 制御文字なので、エディタや端末、フォント等の関係で、表示されなかったり、空白表示されたり、□や別の文字になったりすることがあります。 $str = "\e$B$F$9$H\e(B"; # \eはESCを表すエスケープシーケンス $str = "\033$B$F$9$H\033(B"; # \0XXで8進でコード指定 $str = "\x1b$B$F$9$H\x1b(B"; # \xXXで16進でコード指定 余談になりますが、今回は大丈夫なようですが、ダブルクォートの中に$を書くと以降が変数名だと解釈されるケースがあります。
お礼
ありがとうございます!!!!!!! できました!!!!! なんでスペースがあるんだろうと思ってましたが、スペースじゃなかったんですね! なんとお礼をしたらよいのか… 本当に本当に 本当にありがとうございますm(__)m