CGI-BBS > ホームページ記述言語 > iモード > カタカナに続けて入れたメールアドレスが化ける


カレッヂ
カレッヂ


質問者 らんパパ  投稿日 1/16(火) 22:32:02
iモード用に作られた自動リンク仕様のプログラムでは、私の知っている限りの公開されているものの全てで、以下の症状があります。
カタカナに続けてメールアドレスを打つと、タグが化けます。
例えば、[カタカナaaa@bbb.co.jp]は
[カタカ・a href='mailto:gaaa@bbb.co.jp'>gaaa@bbb.co.jp]となります。
文字の最後と「<」がどこへ行ったやら.アドレスの頭には余分な文字がくっつくし。

これは既知の問題なのでしょうか?私が知らないだけで、実は、カタカナに続けてメールアドレスは入れてはならない、などという常識があったりして;
ウェブのアドレスもftpもだいじょうぶのようです。
カタカナにもだいじょうぶなのがいくつかあります(チとかテ)

気になって気になってしかたありなせん。
どうか教えてください。
回答者  [削除]  投稿日 1/17(水) 11:29:00
>カタカナに続けてメールアドレスを打つと、タグが化けます。
>例えば、[カタカナaaa@bbb.co.jp]は
>[カタカ・a href='mailto:gaaa@bbb.co.jp'>gaaa@bbb.co.jp]となります。
>文字の最後と「<」がどこへ行ったやら.アドレスの頭には余分な文字がくっつくし。

文字コードにシフトJISを使用したときはカタカナに限らず特定の全角文字または文字列で文字化けが起こります。

例えば

 能
 ソ
 ー
 表示
 清水圭

などです。

文字化けする部分に\を入れると直ります。
例:表\示
質問者 らんパパ  [削除]  投稿日 1/18(木) 00:06:48
>文字コードにシフトJISを使用したときはカタカナに限らず特定の全角文字または文字列で文>字化けが起こります

さっそくのレス、ありがとうございます。
確かにご指摘のように特定の文字が化けることは私も知っていましたが、カタカナのほとんどが化ける、とは知りませんでした。頭からそんな馬鹿な、と思っていたのが馬鹿でした。

と言うことは(たった今思いついたのですが)、コード中であらかじめ化ける文字をエスケープさせてやれば良い。。。のでは?
そのあたりの処理をどうしてやれば良いのか、教えてはいただけませんか?

よろしくお願いします。
回答者  [削除]  投稿日 1/18(木) 10:23:47
print "$count件表\示\n";
などのようにprint文に直接書いた全角文字の文字化けは
自分で探して\を入れるしかないようですが
変数に入っている文字の文字化け対策としてquotemeta関数というのがあるようです(Perl5以降)。
実際に使ってみたことはないので詳しいことはよく知らないです。

例:
$a = quotemeta($b);


>カタカナのほとんどが化ける、とは知りませんでした。

そこまでひどくはないはずですが……。
カタカナのほとんどが化けるとすれば
ほかに原因があるかもしれません。
文字化けが起こる文字を調べてみましたが
カタカナは「ー」を含めて4つしかないようです。(↓)

ー―‐ゼソゾ閏噂云骸浬馨擬欺犠啓圭珪梗構江纂蚕讃充十従深申疹措曾曽端箪綻甜貼転
納能脳票表評房暴望夕予余麓禄肋
回答者 しあわせのツボ  [削除]  投稿日 1/18(木) 11:01:21
iモードはいわゆる半角カナを使うので、「半角カナ+英数字」の組み合わせを日本語の文字だと誤認されることは十分考えられます。
リンク処理をいじって、<a>タグの直前に何か化けない文字(半角スペースとか)を入れてみるとどうなりますか?
質問者 らんパパ  [削除]  投稿日 1/18(木) 19:53:18
レスありがとうございます。

<a>タグのまえにスペースを入れると改善されます。
が、根本的な解決にはなっていないので、皆様の教えを請おうと思ったのでした。

羊さんからいただいた、quotemeta関数を少し勉強してみます。

しかし、(カタカナ+<)が化けるのは、自動リンク処理したプログラムのほとんどが(と言っても私が巡回した狭い範囲でのことですけど)このバグを持っているようです。
しあわせのツボさんのご指摘のように、半角カナ+英数字に問題があるとも考えたのですが、PC間でもこれは起こります。
sjisに何かあるのかなぁなどと思ってみたりもする今日この頃です(笑

皆様、ご親切に適切なご指導をいただき、本当に感謝!
さすがに裏技さんのbbsですね。
この事に関しては私はしばらく悩むはず・・ですが、とりあえず一度ここで終わりにします。
「こうしなさい」という改善法がありましたら、メールででも、また、このコーナーにでもアップしていただければ幸甚です。

ありがとうございました。m(__)m

返信(回答)する


Web裏技