みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

Javaで割り当てられていない文字コードを判別

javaで文字をDrawStringする際に描画対象の文字コードに対して文字が割り当てられていないコードだった場合に特定の文字に置き換える処理を作りたいのですが、その判別方法が分かりません。
外字も対象範囲なのですが、外字登録されているものされていないものを判別しなければいけません。
文字コードはUTF-8です。

どなたかご教授のほど宜しく御願いします。

投稿日時 - 2012-08-17 11:28:58

QNo.7648414

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

Font クラスの canDisplay メソッドでなんとかなる... か?

投稿日時 - 2012-08-22 01:09:47

補足

試してみましたcanDisplay。すべての外字コードにたいしてtrueを返します。なぜ文字が割り当たっていないのに描画可能なんでしょうか。よくわかりません。空の場合はぐりふありとしているのでしょうか。

投稿日時 - 2012-08-22 10:11:05

ANo.3

Unicodeの私用領域の文字だったら、Character.getType(char)の結果がCharacter.PRIVATE_USEと一致するかどうかを見ればいいのでは。

投稿日時 - 2012-08-20 21:22:15

補足

教えていただいた方法を試してみました。
何故か割り付けられていないコードでもprivate_useと一致しています。見分けがつけられません。

投稿日時 - 2012-08-21 12:14:29

お礼

回答ありがとうございます。明日職場で早速試して見ます。
javadocなどいろいろ見たのですがかゆいところが載っていません。
ご指摘いただいた定数定義などもよくわからない説明しかありません。英語版を読むとのっているのでしょうか?
font.canDisplayなども試してみましたが。文字が割り当てられていない文字コードでもtureが帰ってきてしまいます。

投稿日時 - 2012-08-20 23:17:02

ANo.2

えぇと, 「描画対象の」ってことは, ひょっとして
特定のフォントで割り当てられているかどうか
を知りたいってこと?

投稿日時 - 2012-08-17 23:59:49

補足

そそうなんです。具体的にはMS明朝のU+E000に文字が割り当てられているかどうかを判別したいんです。
もっと具体的に書くとDrawStringした時に割りあたってないコードの場合は空白が出てしまうのですが、その空白をエラー判別文字(任意に決めた文字、たとえば'?'など)に置き換えたいのです。
drawされた画像を見たときにエラー文字が含まれてるって分かるために。
javaでは出来ないことなんでしょうか。
そこの理解までまだいたっていません。

投稿日時 - 2012-08-18 16:45:48

お礼

見当はずれな質問かもしれませんがご親切に対応いただきありがとうございます。

投稿日時 - 2012-08-18 16:46:56

ANo.1

ある程度は Character.isDefined でできそうだけど, まず間違いなく完璧ではない. 「コードに文字を割り当てる」のは Java ではなく Unicode Consortium の仕事だし, Java のバージョンによって対応する Unicode のバージョンが違う (そして「コードに文字が割り当てられているかどうか」も変わる).

そもそも「外字登録」ってどういうこと?

投稿日時 - 2012-08-17 15:09:39

補足

外字登録とは外字の範囲で文字が割り当てられていることをいっています。
分かりにくくてすみません。
とりあえず教えていただいた方法を試してみます。

投稿日時 - 2012-08-17 17:38:29

お礼

回答をありがとうございます。
教えていただいたcharcter.IsDefined()を試しましたが、どの文字をいれてもtrueが帰ってきてしまいます。
U+FFFF,U+FFFEのみfalseが帰ってくるようです。全部は試していませんが。
このメソッドが使用しているunicodeDataファイルについて全く知識がないためそこを調べてみようと思います。

投稿日時 - 2012-08-17 18:44:10

あなたにオススメの質問