下の例では、 substr を使って 10文字(全角は5文字) の部分のみを取出し、
・・・ を結合した後、画面表示しています。
文字列は半角1文字を1と数え、全角1文字は2ですので、下の場合は全角文字ばかり
ですが、ここに半角文字が入ってしまうと、取出す際に 全角文字2バイトの内
1バイト
のみ取出す事になってしまい、文字化けが発生してしまいます。
以下 2つの例では流れを見る為に、その対処を行っていませんが最下部のサンプル
ソースでは、半角を全角に変換する事で、不具合の解消を行っています。
下のサンプルソースでは、長さを調べ、どれだけの長さ省略されたかも表示します。
このソースでも半角文字を使おうとすると、文字化けが発生する可能性があります。
下のソースでは、半角文字を全角文字に jcode.pl で変換してから、省略の処理を行って
いますので、半角文字が入っていても正しく処理が行われます。
この全角と半角による不具合は意外と見落としがちなので、特に注意しましょう。
他にも区切る処理など、1文字ごとに何かをする処理では同様の処理が必要です。
|