• ベストアンサー

「シフトJIS X 0213」形式の文字コードチェック

Javaにて「シフトJIS X 0213」で定められている下記の文字を判断したいです。 (参照: http://www.eonet.ne.jp/~kotobukispace/ddt/jisx0213/sjis8xxx.html) ・第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

質問者が選んだベストアンサー

  • ベストアンサー
  • thamansa
  • ベストアンサー率40% (95/232)
回答No.1

>Javaにて「シフトJIS X 0213」にエンコードすることは可能でしょうか。 質問文のリンク先を読んでみましたが、X 0213はまだサポートされていないようですね。 JavaのUnicode文字を単にShift_JISにエンコードすれば第1水準・第2水準の文字は判断できますが、第3水準・第4水準については難しそうですね。 また、予約・使用不可というのは文字ではなく、使えないコード範囲なのですから、Unicode文字には予約・使用不可に変換される文字は無いでしょう。

readygo_00
質問者

補足

thamansa様、ご回答真にありがとうございます。 私の質問文の書き方が悪く、真意が伝えきれておりませんでした。 真意としては、対象の文字に禁則文字(※1)が含まれているか否かを判断したいのです。 Shift_JISにエンコードすることで、「第1水準」「第2水準」の判断がつくのであれば、 エンコード出来ない文字は、禁則文字(※1)として判断出来る認識で良いでしょうか。 (※1)「シフトJIS X 0213」で定められている下記の文字 ・第3水準 ・第4水準 ・予約 ・使用不可

その他の回答 (2)

  • thamansa
  • ベストアンサー率40% (95/232)
回答No.3

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

readygo_00
質問者

お礼

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

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.2

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

readygo_00
質問者

補足

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

関連するQ&A