Interstage Application ServerのJavaで、MS932からUnicodeを経由してEUC_JPにコード変換できない文字の一覧を教えてください。
- JavaでMS932からUnicodeを経由してEUC_JPにコード変換できない文字の一覧を教えてください。
- JavaではUnicodeと各種文字コードセットのコンバータを提供しています。
サポートされているエンコーディングについては、以下のJDKのドキュメントを参照してください。
JDK 6 ドキュメント
https://docs.oracle.com/javase/jp/6/
(国際化->サポートされているエンコーディング)
https://docs.oracle.com/javase/jp/6/technotes/guides/intl/encoding.doc.html
Java Platform Standard Edition 7 ドキュメント
https://docs.oracle.com/javase/jp/7/
(国際化サポート->サポートされているエンコーディング)
https://docs.oracle.com/javase/jp/7/technotes/guides/intl/encoding.doc.html
各コンバータでの変換コード表がそれぞれ規定されているわけではありません(Javaとして各文字コードを管理しているわけではありません)。
そのため、ベースとなる文字規約については、各規約を確認してください。
なお、以下のようなプログラムを作成することで、ご使用のJava環境で、MS932からUnicodeを経由してEUC_JPにコード変換できない文字の一覧を出力することもできます。
===============
import java.nio.charset.*;
import java.nio.*;
public class ListUncovertableCharacters {
public static void main(String[] arg) throws Exception
{
Charset csMS932 = Charset.forName("MS932");
CharsetDecoder decMS932 = csMS932.newDecoder();
Charset csEUCJP = Charset.forName("EUC_JP");
CharsetEncoder encEUCJP = csEUCJP.newEncoder();
ByteBuffer bb = ByteBuffer.allocate(2);
CharBuffer out = CharBuffer.allocate(1);
for (int hb = 0x80 ; hb < 0x100 ; ++hb) {
for (int lb = 0x40 ; lb < 0x100 ; ++lb) {
bb.clear();
bb.put((byte)hb);
bb.put((byte)lb);
bb.flip();
decMS932.reset();
out.clear();
CoderResult res = decMS932.decode(bb, out, true);
if (res.isUnmappable())
continue;
out.flip();
char utf16 = out.get();
encEUCJP.reset();
if (!encEUCJP.canEncode(utf16))
System.out.println(Integer.toHexString(hb) + Integer.toHexString(lb) + " U+" + Integer.toHexString(utf16));
}
}
}
}
===============
製品・サービス区分 | Interstage | ||||||
---|---|---|---|---|---|---|---|
製品・サービス情報 |
|
||||||
アンサー種別 | 設計/開発 |