新・元地方の中規模印刷会社で苦悩するWebデザイナー改めWebディレクターの日記

自由な20代、窮屈な30代を経て、遂に40代になっちまったWebディレクター&パソコン講師の覚書と思う言(こと)。略称【ちほちゅう】

*

jcode.plで半角カタカナを全角カタカナにしてフォーム送信させる

   

  • このエントリーをはてなブックマークに追加

1年以上前の記事です。内容が古い可能性があります。

ひょんなことからお客様よりツッコミが入った。
やはり、ケータイユーザーなのだろう。
送信フォームで半角カタカナが使えないという。

さっそく半角カタカナで送信してみる。
ハンカクカタカナノテスト01

スポンサーリンク
 

ハンカクカタカナノテスト02
確認画面ですでに化けている。

ちなみに、僕が普段使っている送信フォームのシステムはperlで作られたCGI。
ベースはこの業界ではすでに老舗の老舗になっている「ネットサーフレスキュー(Web裏技)」の「WebFORM」。
これをいろいろと改良して今まで使ってきている。
このプログラムは日本語処理に有名な「jcode.pl」を使用している。

色々調べてみてたどり着いたのは以下の記事。
□ CGI 半角カナでも文字化けしない jcode.pl の使い方! さとーC++ぶろぐ/ウェブリブログ

文字コード変換時に,jcode.plの持っている
自動文字コード認識機能を利用せず,もともとの漢字コードを明確に
指定してやればよい。

ということで、元々の漢字コードを調べるプログラムとして以下のプログラムを紹介している。

$buffer1 = $buffer;
$buffer1 =~ s/%([0-9a-fA-F][0-9a-fA-F])/pack(“C”, hex($1))/eg;
$kcode = &jcode::getcode(*buffer1);

こちらをまずは採用。
具体的にはデータ入力処理とデコード処理の間に配置する。

次に、

指定方法は,convertの3番目の引数を省略せずに書けばよいだけ。

とのことなので、デコード処理内プログラムにある

&jcode’convert(*name,’sjis’); &jcode’convert(*value,’sjis’);

&jcode’convert(*name,’sjis’,$kcode);&jcode’convert(*value,’sjis’,$kcode);

に書き換える。

ここまでで動作確認をすると。
ハンカクカタカナノテスト03
よし、確認画面でしっかり表示されている。

ところが、この状態で送信しても結局受信したメールでは文字化けが起きてしまう。
これはもう、半角カタカナを全角カタカナに変換して送信してしまうことにした。

それに関してはこちらの記事が参考になった。
□ 日本語文字コード(jcode.plの使い方)-ミスティーネットPerl・CGI講座-

半角カナを全角カナに変換する場合は、&jcode’convert() を使います。
[書式] &jcode’convert(文字列, 変換したい文字コード, 文字列の文字コード, ‘z か h’);

4番目の引数に「z」を入力すると半角カナから全角カナへ変換します。

つまり、上記

&jcode’convert(*name,’sjis’,$kcode);&jcode’convert(*value,’sjis’,$kcode);

&jcode’convert(*name,’sjis’,$kcode,’z’);&jcode’convert(*value,’sjis’,$kcode,’z’);

に書き換えればOK。

確認画面。
ハンカクカタカナノテスト04

送信メール。
ハンカクカタカナノテスト05

 - プログラミング, ユーザビリティ

アドセンス広告メイン

Comment

  1. とても魅力的な記事でした!!
    また遊びに来ます!!
    ありがとうございます。。

Message

メールアドレスが公開されることはありません。

  関連記事

新foursquare(フォースクウェア)でチェックインしようとするとSwarm(スワーム)が立ち上がる

1年以上前の記事です。内容が古い可能性があります。位置情報SNSの代表格、「fo …

Remember The Milk(リメンバーザミルク)とGoogleカレンダーの連動の仕方

1年以上前の記事です。内容が古い可能性があります。Remember The Mi …

空飛ぶ自動車「AeroMobil」が2017年に販売開始。多分日本じゃ買えないと思う

1年以上前の記事です。内容が古い可能性があります。なんと、映画の世界だけだと思っ …

自由研究はプログラミング。「プログラミン」が面白い

1年以上前の記事です。内容が古い可能性があります。文部科学省が小学生向けオンライ …

no image
メモリが”read”になることはできませんでした。

1年以上前の記事です。内容が古い可能性があります。Windowsのアプリケーショ …

no image
Foursquare(4sq)とFacebook(フェイスブック)を連携させる方法

1年以上前の記事です。内容が古い可能性があります。Facebook(フェイスブッ …

no image
ライブドアでトラックバックのテスト

1年以上前の記事です。内容が古い可能性があります。届いたのか届かないのか分からな …

「ドキドキまあちゃんゲーム」ってのを警視庁が出したらしい

1年以上前の記事です。内容が古い可能性があります。こんなニュースを見かけて気には …

携帯サイト・Webサイト振り分けスクリプト【perl】

1年以上前の記事です。内容が古い可能性があります。携帯サイトとWebサイトを同じ …

やっと来た。パソコン版ツイッターの新UIは意外といい!(プロフィールのみ)

1年以上前の記事です。内容が古い可能性があります。ツイッターの新UI(ユーザーイ …

血液型オヤジ