[PHP-dev 1228] ISO-2022-JPでmb_strcutを使ってみる

Tadashi Jokagi ml @ elf.no-ip.org
2006年 3月 27日 (月) 05:05:27 JST


      上鍵です.こんにちは.
      ISO-2022-JP で mb_strcut を使ってみました.結果希望通りの処理は
    行われませんでした.下記おおよそ 40 バイトを基準に改行を入れるサ
    ンプルです.

■スクリプト
<?php

mb_language( "ja");
mb_internal_encoding( "UTF-8");

$string = mb_convert_encoding( "1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890", "ISO-2\
022-JP");

$rows = array();
for ( $i = 0; $i < strlen( $string); $i += 40) {
    $rows[] = mb_strcut( $string, $i, 40);}
foreach ( $rows as $row) {    echo mb_convert_encoding( $row, "UTF-8", "ISO-2022-JP")."\n";
}

?>

■実際の結果
123456789012345678901234
567890123456789012345678
9012345678901234567890
B#1#2#3#4#5#6#7#8#9#012345678901
2#3#4#5#6#7#8#9#0

    希望の結果としては文字化けせずにすべての文字が正しく出力されて欲
    しかったのです.

#希望の結果を正しく掲示する余裕がないので省略してしまっています.すみ
 ません.

    おそらく,start の時,今の状態を正しく持っていない(先頭から SI/SO
    の状態を調べつつ start まで来ていない)ということだと思うのですが,
    どういう風にすると希望通りの処理になりそうでしょうか? なお,最終
    的に行いたいことは,

    1.(仮に)40 バイト以下で文字列を区切る
    2.BASE64 でエンコードし,出力
    3.2.の出力を受けとり,BASE64 デコード
    4.3.の文字列をすべて連結した,元の文字列に復元完了

    という感じです.

-- 
----.----1----.----2----.----3----.----4----.----5----.----6----.----7
Tadashi Jokagi/Setagaya city mailto:elf @ elf.no-ip.org
YokukitanaII http://elf.no-ip.org/
Yokukitablog http://blog.poyo.jp/
Yokukitawiki http://wiki.poyo.jp/


PHP-dev メーリングリストの案内