人に聞けない痔の悩み、これでスッキリ >>

質問があるのですが、よろしくお願いします。

perlのsubstrを使って、
$d = substr ($d,0,230);
などどした時に、$dのデータ量が多いと(例えば500Byteほど)、なぜか取り出したデータの末尾に「・」のような、文字が追加されてしまうことがあるのです。substrを実行したあとに、print $d などとして、ブラウザ上に表示させようとすると「・」が、その末尾に表示されてしまいます。

これはどういった作用によるものなのでしょうか??バグなのでしょうか??どなたか分かる方いらっしゃいましたらご教授よろしくお願いします。

A 回答 (2件)

元々perlが全角文字などを意識していないので混在の場合は難しいですね。


以下のサイトのようにコードで判定するのが早そうです。

http://www.din.or.jp/~ohzaki/perl.htm#JP_Cut
http://d.hatena.ne.jp/shag/20060718

特に一つ目のURLは他にも全角半角を判定して文字単位に配列に格納するとか、
結構参考になりそうな記述が多いと思います。
    • good
    • 0
この回答へのお礼

jcode.plを使うことで解決出来ました!
ありがとうございます!感謝致します。

お礼日時:2006/10/28 17:59

全角或いは、全角半角混在の文字列に対してsubstrを使っていないでしょうか?


JPerlでなければ全角1文字が2文字とカウントされて思わぬところで切れたりしますが、
それが原因ではないでしょうか?
つまり、最後の全角文字が半分で切れているのではないでしょうか?

この回答への補足

回答ありがとうございます!
おっしゃる通り、全角半角混在の文字列に対して使用していました。
もしよろしければ、どのようなコードを追加すればこの問題を解決できるか教えて頂けないでしょうか?よろしくお願いしますm(__)m

補足日時:2006/10/27 14:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング