WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:半角カタカナに対応した入力

0:[投稿] 29歳からのPerl [2002/10/08 22:14 ][環境:WIN+IE UNIX系+Perl]

半角カタカナに対応した入力処理(フォーム処理)は、どのようにしたら良いでしょうか?
要点は、半角カタカナだけで入力された場合の判定です。
良いアイデアを教えて下さい。

3230に関連した質問なのですが、
もしかして、他にも興味がある人がいたらと別スレッドにしました。
過去ログにも似たようなのがあるのですが、改めてお願いします。


1:[回答] JTR [2002/10/10 10:30 ]

以下でどうですか?

#!/usr/local/bin/perl
require 'jcode.pl';   # jcode.plへのパス

$xx = "コイケイイイイイイイイイイウウウウウウ";

&jcode::convert(*xx, 'euc','sjis');

if( $xx =~ /^(?:\x8E[\xA6-\xDF])*$/){
  print "半角カタカナだけマッチ", "\n";
}
else{
  print "マッチしない", "\n";
}


2:[回答] おーなーしぇふ [2002/10/10 13:54 ]

以下のページが参考になるかも?

http://www.din.or.jp/~ohzaki/perl.htm#JP_Exist

「# $str に半角カタカナが含まれているか判定する」を参考のこと。

※これに限らず上記ページは参考情報豊富なので、Perlでわからないことがあるときはチェックすることをオススメします。


3:[回答] [2002/10/10 16:46 ]

>>1 >>2
> 要点は、半角カタカナだけで入力された場合の判定です。
って文字コード判定の話だと思ったのですが...違いますか?
文字列をEUC変換する以前に、
半角カナのみの入力に対する文字コード自動判定は、
SJISでもEUCでも事実上不可能だと思いますが。
# で、3230のような話なのでは。


4:[回答] おーなーしぇふ [2002/10/10 20:56 ]

>>3
>って文字コード判定の話だと思ったのですが...違いますか?
失礼しました。勘違いしてました。

>半角カナのみの入力に対する文字コード自動判定は、SJISでもEUCでも事実上不可能だと思いますが。

SJISの全角とEUCの半角カナ、SJISの半角カナとEUCの全角に重なりがあるのでダメ……ということですね。

むしろこちらのお話になりますね。

●漢字コードを調べる
http://www.din.or.jp/~ohzaki/perl.htm#JP_Code


5:[質問] 29歳からのPerl [2002/10/10 21:23 ]

説明不足すぎました。そのためご迷惑おかけしました。
他の方にも参考になればと思ったのわりに、わかりにくすぎました。

(半角カナのみの)文字列単独では、文字コードの判別は無理だと認識しております。
ただ、以下の条件の元に方法がないかと思いまして、
1)用意したフォームにより入力がある(私が作成したsjisのhtml)。
2)作成したCGIで処理される。
3)$ENV{REMOTE_HOST}( or gethostbyaddr)が利用できる。

------ こんな感じのフォームから -----
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
</head>
<body>
SJISのHTMLです。
<form action="form.cgi">
<input type="text" name="NAME">
<input type="text" name="RUBY">
<input type="submit">
</form>
</body>
</html>

SJISのフォームからは、SJISのフォームデータしかCGIに渡らないと断定できれば楽だと思ったので、
[3230]で質問させてもらいました。
この方法が難があると理解しましたので、何か良い方法がないかと質問させてもらった次第です。

今までは、以下の方法などを利用してました。
a)SJISのフォームからは、SJISのフォームデータしかこないだろうと処理していた。
b)<input type="hidden" name="JCODE" value="日">を埋め込んで、$charcode = jcode::getcode( \$PARAM{'JCODE'} );で判断していた。
c)携帯から(*.docomo.ne.jp)の処理はSJISだと断定していた。(携帯なりすましは・・・)
d)全ての入力欄をjoinして、それをgetcodeして判断など。

これからは、b)で処理しようかと思っています。
知りたいのは、
他に良い方法があれば知りたいという点と、
この方法に穴がないかという点です。
(hiddenコントロールのvalue属性で指定した値はどうなるのか?)

さらに、わかりにくくなった気もしますが、ご容赦ください。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World