- - PR -
文字コードでの判定
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2002-10-21 05:23
お世話になります。たららんです。
JavaScriptにはcharAtcodeという関数で文字コードを取得することができます。 その取得した文字コードと数字で判定ができます。 var ct; var work = charCodeAt(ct); if(work == 20) { ・・・ のように数字で判定ができます。 それで、JavaScriptでなくJavaでこのようなことを したいと思い調べたのですが 文字コードを取得する関数が見つかりません。 それで、以下のことをお聞きします。 1.Javaで文字コードを取得する方法はご存知でしょうか? 2.JavaScriptを使わず文字コードでの判定はできるでしょうか? 以上、ご存知でしたら教えてください。 よろしくお願いします。 | ||||||||
|
投稿日時: 2002-10-21 10:14
一旦byte型配列に変換してそれの文字コードを調べるという手があります。
(ただし、noencodeがすでに正しくUnicodeに変換されている場合この方法は正しく動きません) 最近ではわざわざ文字コードを見なくても、
とすれば、日本語の文字列をただしくUnicodeに変換してくれます。 詳しくは @IT記事の「日本語を扱うときの留意点(パラメータ取得時)にはどんなものがありますか?」を見てください。 あと、JavaScriptのcharAtcode関数はブラウザによって違う動きをしませんか?たとえばNestscapeだと文字の1バイト目返すけれど、IEだとUnicodeを返しません?エンコードの判定には使えないような・・・。 | ||||||||
|
投稿日時: 2002-10-22 01:26
ご返答ありがとうございました。
ちょっと説明不足でした。 文字コード自体を調べたいのではなくて、 実は英数字以外をエラーとしたいのですが、 JavaScriptでエラーチェックをしていた時に、 文字コードの大小でチェックをしていましたので(以下) if (chart.charCodeAt(0)>=33 && chart.charCodeAt(0)<=126) ・・・ これと同じことをJavaでできないかなぁと思いまして・・・ byte型に変換が必要ですか。 且つ、Unicodeに変換されていてはダメってことですね。 もう少し簡単にできるかと思っていたのですが。 H2さんありがとうございました。 参考にさせていだきます。 | ||||||||
|
投稿日時: 2002-10-22 07:17
なるほど、それでしたらこれで出来ますよ。charを取り出して、それをそのまま使えます。もともとchar自体が文字コードですので。
Unicodeはあまり詳しくないのでちょっと分からないのですが、java.lang.Char#getType(char ch)は使えないのかなぁ? | ||||||||
|
投稿日時: 2002-10-22 17:56
java.lang.Character.getType(char ch) は '1'とかだけでなく、'1'も Character.DECIMAL_DIGIT_NUMBER として返してしまうみたいですね。 java.lang.Character.isDigit(char ch) も 両方trueですね。 国際化されてる…。 | ||||||||
|
投稿日時: 2002-10-22 18:41
ほう では'一'は?と思って試してみました。残念、さすがに'一'はCharacter.OTHER_LETTERでした。これでCharacter.DECIMAL_DIGIT_NUMBERと返してくれたらとてもビックリするのですが・・・。でも、漢字を数字と認定するようになるのはよくないですよね。 | ||||||||
|
投稿日時: 2002-10-22 19:11
そうなんですよね。 でもこれが原因でDBに出力するときに 結構困ったりします。(SQL文を直に作ってたりすると...。) | ||||||||
|
投稿日時: 2002-10-22 23:39
Integer.parseInt() も "1000" とか解釈しまっせ。
なので、「数値だ」とわかってる場合なら、(new Integer(もげ)).toString() して NumberFormatException を捕まえるなんていう荒技も(わ SQL を直に、というのはあまりおすすめできなさそう。 PreparedStatement で setInt するのが安全でしょう。 # JDBC driver が腐ってなければ。 | ||||||||
