プロが教えるわが家の防犯対策術!

Javaにて「シフトJIS X 0213」で定められている下記の文字を判断したいです。
(参照: http://www.eonet.ne.jp/~kotobukispace/ddt/jisx02 …
・第3水準
・第4水準
・予約
・使用不可

実現方法としては、文字列を「シフトJIS X 0213」にエンコードして、
エンコードした文字のバイトを判断するのが妥当だと思いますが、
Javaにて「シフトJIS X 0213」にエンコードすることは可能でしょうか。

sunの「サポートされているエンコーディング」の一覧を見ても「シフトJIS X 0213」
はサポートされていないように見受けられます。
(参照: http://www.ingrid.org/java/i18n/encoding/

仮に「シフトJIS X 0213」にエンコード出来ない場合、
他の方法にて実現する方法等ありましたらご教授願います。

【動作環境】
OS:Windows Vista Business
JRE:1.5.0_10

A 回答 (3件)

>Javaにて「シフトJIS X 0213」にエンコードすることは可能でしょうか。



質問文のリンク先を読んでみましたが、X 0213はまだサポートされていないようですね。

JavaのUnicode文字を単にShift_JISにエンコードすれば第1水準・第2水準の文字は判断できますが、第3水準・第4水準については難しそうですね。
また、予約・使用不可というのは文字ではなく、使えないコード範囲なのですから、Unicode文字には予約・使用不可に変換される文字は無いでしょう。

この回答への補足

thamansa様、ご回答真にありがとうございます。

私の質問文の書き方が悪く、真意が伝えきれておりませんでした。
真意としては、対象の文字に禁則文字(※1)が含まれているか否かを判断したいのです。

Shift_JISにエンコードすることで、「第1水準」「第2水準」の判断がつくのであれば、
エンコード出来ない文字は、禁則文字(※1)として判断出来る認識で良いでしょうか。

(※1)「シフトJIS X 0213」で定められている下記の文字
・第3水準
・第4水準
・予約
・使用不可

補足日時:2008/04/18 21:13
    • good
    • 0

JIS規格の「Shift_JIS」には、NEC拡張文字とIBM拡張文字が入っていなくて、それらを含めた文字コードはMS932またはWindows-31Jという文字コードです。



str.getBytes("Windows-31J");
    • good
    • 0
この回答へのお礼

thamansa様、No.1の答えに重ね、ご回答真にありがとうございます。
ご教授いただきました方法によって実現することが出来ました。

この度は真にありがとうございました。

お礼日時:2008/05/07 17:16

第3水準・第4水準文字は、SJISでgetBytes()すると0x3f、すなわちASCIIの'?'文字になります。

この回答への補足

ranco様、ご回答真にありがとうございます。
ANo.1のthamansa様の回答より、Shift_JISにエンコードすることで、「第1水準」「第2水準」の判断がつくと認識しました。
str.getBytes("shift_jis");
より、Shift_JISにエンコードする方法を取り、動作確認レベルで検証を行いましたが、
0x8740~0x8775の「第1水準」の文字(機種依存文字でしょうか?)が変換不能になり、0x3F(63)が返却されてしまいます。
何か良い解決策をご存知ないでしょうか。。。
質問ばかりで申し訳ありません。

補足日時:2008/04/18 21:21
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!