- PR -

第三水準と第四水準no

1
投稿者投稿内容
どんたくお
ベテラン
会議室デビュー日: 2005/08/29
投稿数: 88
投稿日時: 2006-12-27 20:39
こんばんは。
どんたくおです。

Javaに関わることではないのですが、現在第三水準と第四水準の
文字一覧を作成したいと思っております。
// 文字一覧が画像のものはみつけたのですが・・・。


そこで、Javaで以下のようなコードを使いまして、第三水準の
一覧を出力させてみました。
コード:
Charset charset = Charset.forName("Windows-31J");
CharsetDecoder decorder = charset.newDecoder();
		
StringBuffer sb = new StringBuffer(2000);
for (int row = 0xea; row <= 0xfc; row++) {
	for (int cell = 0x40; cell <= 0xff; cell++) {
		byte b1 = (byte)row;
		byte b2 = (byte)cell;
		byte[] bytes = {b1, b2};
		
		ByteBuffer bb = ByteBuffer.wrap(bytes);
		CharBuffer cb = null;
		try {
			cb = decorder.decode(bb);
		} catch (CharacterCodingException e) {
			System.out.println(Integer.toHexString(row) + " " + Integer.toHexString(cell) + " " + "×");
			continue;
		}
		char ch = cb.charAt(0);
		System.out.println(Integer.toHexString(row) + " " + Integer.toHexString(cell) + " " + ch);
		sb.append(ch);
	}
}


すると、CharacterCodingExceptionが行ったときに表示される「×」と
CharacterCodingExceptionは発生しないのに、「・」と表示されるもの
がありました。


例外が発生するのと「・」と表示されてしまうのは、定義されていない
からでしょうか。


もし、わかるかたがおいでましたら、ご教授いただけると幸いです。
さいくろう
大ベテラン
会議室デビュー日: 2005/11/19
投稿数: 170
お住まい・勤務地: 川崎市
投稿日時: 2006-12-27 21:51
引用:

どんたくおさんの書き込み (2006-12-27 20:39) より:

例外が発生するのと「・」と表示されてしまうのは、定義されていない
からでしょうか。


そこに気がついたんだったら、先に手元でフォントを確認しようよ。
Windowsの場合、Vistaから搭載されると聞いているが。
お犬様
ベテラン
会議室デビュー日: 2003/01/26
投稿数: 67
投稿日時: 2006-12-29 16:13
残念ながら、Windows-31J には基本的に第三水準と第四水準は入ってません。単純にリストするなら、Windows-31J ではなく ISO-2022-JP か EUC-JP を使った方が簡単だと思われます。

Windows-31J には第一水準、第二水準に加えて IBM拡張文字と NEC選定IBM拡張文字が入ってます。IBM拡張文字と NEC選定IBM拡張文字には第三水準、第四水準の文字も含まれていますが、第三水準、第四水準の全ての文字を含んではいません。いわゆるシフトJISで第三水準と第四水準に対応してるのは Shift_JIS X 0213 ぐらいだと思いますが、確か Shift_JIS X 0213 は実装されていなかったはずです。


ついでに、
> 例外が発生するのと「・」と表示されてしまうのは、定義されていないからでしょうか。

この件に関しましては、第三水準、第四水準とは あまり関係がありませんが、Windows-31Jの表
http://www.microsoft.com/globaldev/reference/dbcs/932.mspx
を見てください。この表で割り当てられていない部分に関しては基本的に "×" が表示されるはずです。また、この表には書いてないようですが、0xF040 〜 0xF9FC までの領域は Unicode のユーザ定義文字(U+E000 〜 U+E757)へと変換されます。これは、Microsoft の実装にあわせたものだと思います。この部分は変換可能ですので CharacterCodingException の原因とはなりませんが、ユーザ定義文字を持っているフォントを使用しなかったため、文字の描画の際に Windows によって "・" に変換されたのだと思います。
どんたくお
ベテラン
会議室デビュー日: 2005/08/29
投稿数: 88
投稿日時: 2007-01-14 18:27
ご返信が大変遅れてしまいました。

>さいくろう様
ご返信ありがとうございます。

そこに気がついたんだったら、先に手元でフォントを確認しようよ。
ご指摘ありがとうございます。
フォントで区点を確認したところ、そちらでも「・」と表示されました。

>お犬様
ご返信ありがとうございます。
第三と第四でも、含まれるものと含まれないものがあるのですね。
それで、表示できるものとできないものがあったのですね。
自分の調べがいかに甘いかということを痛感させられました。


皆様ご指摘ありがとうございました。

1

スキルアップ/キャリアアップ(JOB@IT)