String基本

class StringDump {
public static void main(String[] args) {
String str = "問題の発生している文字列";
System.out.println(str);
char[] buf = str.toCharArray();
for (int i = 0; i < buf.length; i++) {
System.out.print(Integer.toString(buf[i], 16) + " ");
//Integer.toString(buf[i], 16).toUpperCase()
}
}
}

/*
>>javac StringDump.java
>>java StringDump

問題の発生している文字列
554f 984c 306e 767a 751f 3057 3066 3044 308b 6587 5b57 5217

>>


カノニカライゼーション
一般に、メソッド equals() が true を返す等価なオブジェクトを、演算子 == が true
を返す一意なオブジェクトで置き換えることを、カノニカライゼーション (Canonicalization)
と呼びます。オブジェクトの種類ごとに生成されるインスタンスの個数を一つに制限するので、
インスタンス化の回数を減らし、データの一意化を促します。
String 型オブジェクトの生成は、JVMの実行時コンスタント・プール
で低レベルに実装されているものの一つです。
事象
次のコードでは、同じ文字列オブジェクトが参照されます。
String str1 = "Hello";
String str2 = "Hello"; // str1 == str2 is true

次のコードは別の文字列オブジェクトを生成して参照します。
String str1 = "Hello";
String str2 = new String("Hello"); // str1 == str2 is false

str1 == str2 は、前者の例では true を返しますが、後者の例では false を返します。== は変数に代入されている値を比較するものなので、別のオブジェクトへの参照を保持していれば、false が返るのです。文字列オブジェクトに保持されている文字列が等価であることを評価する場合は equals() を使います。次のコードは、いずれの場合でも true を返します。
boolean bln = str1.equals(str2); // bln is true

class CanonicalStringDemo {
public static void main(String[] args) {
String str1 = args[0];
String str2 = "こんにちは";
String str3 = new String("こんにちは");

// 非カノニカル表現
System.out.println("Not Canonical representation:");
System.out.println("\t" + (str1 == str2));
System.out.println("\t" + (str1 == str3));

// カノニカル表現
System.out.println("Canonical representation:");
System.out.println("\t" + (str1.intern() == str2.intern()));
System.out.println("\t" + (str1.intern() == str3.intern()));
}
}


>javac CanonicalStringDemo.java
>java CanonicalStringDemo "こんにちは"
Not Canonical representation:
false
false
Canonical representation:
true
true
*/

Java Code

 Javaでは文字列はUnicodeとして取り扱われます。つまりString、キャラクタ配列、
キャラクタストリーム上で操作される文字列はUnicodeになります。
 逆にSJISやEUCのようなネイティブなコード系で記述されたテキストはJavaにとっては
バイト列が格納されたバイナリファイルとして存在します。つまりネイティブなコード系
はバイト配列とバイトストリームとして取り扱われるわけです。
 このためコード系変換はネイティブなコード系が格納されているテキストファイル
(Javaにとってはバイナリファイル)に対する入出力のタイミングで行われます。
 バイナリファイルに格納されているバイト列からキャラクタ列への変換のタイミングで
ネイティブのコード系はUnicodeに変換され、逆にキャラクタ列からバイト列への変換の
タイミングでUnicodeはネイティブのコード系に変換されます。

変換例:
String unicodeStirng = new String(data.getBytes("iso-8859-1"), "Shift_JIS");
String unicodeStirng = new String(data.getBytes("Shift_JIS"), "EUC_JP");

エンコーディング名別名一覧:
以下のエンコーディング名別名一覧は j2sdk-1_3_1-src.tar.gz に含まれている
/j2sdk1.3.1/src/share/classes/sun/io/CharacterEncoding.java からの抜粋です。

java.lang.String#getBytes() などのエンコーディング名を使用する場面で使われます。
ハッシュの値(右側)を正式名としているようです。大文字小文字を判断します。
ハッシュのキー(左側)は正式名に対する別名です。こちらは大文字小文字を判断しません。
このため別名の "jis" を "JIS" と書くのはOKですが、正式名の "ISO2022JP" を "iso2022jp"
と書くことはできません。

以下の抜粋では、最初に日本語用エンコーディング名別名一覧をまとめました。
そのあとに全エンコーディング名別名一覧(日本語用含む)が続きます。



========== 日本語用エンコーディング名別名一覧 START ==========
// Specialized auto-detection for Japanese charsets
aliasTable.put("jis auto detect", "JISAutoDetect");

// MIBenum: 16/39
aliasTable.put("jis", "ISO2022JP");
aliasTable.put("iso-2022-jp", "ISO2022JP");
aliasTable.put("csiso2022jp", "ISO2022JP");
aliasTable.put("jis_encoding", "ISO2022JP");
aliasTable.put("csjisencoding", "ISO2022JP");

// MIBenum: 17/2024
aliasTable.put("shift_jis", "MS932");
aliasTable.put("ms_kanji", "MS932");
aliasTable.put("csshiftjis", "MS932");
aliasTable.put("windows-31j", "MS932");
aliasTable.put("cswindows31j", "MS932");
aliasTable.put("x-sjis", "MS932");

// JIS-defined Shift JIS
注:"シフト符号化表現" と書かれています。
aliasTable.put("\u30b7\u30d5\u30c8\u7b26\u53f7\u5316\u8868\u73fe",
"SJIS"); // JIS name
aliasTable.put("pck", "SJIS"); // Solaris PCK

// MIBenum: 18
// Japanese EUC
aliasTable.put("eucjis", "EUC_JP");
aliasTable.put("euc-jp", "EUC_JP");
aliasTable.put("eucjp", "EUC_JP");
aliasTable.put("extended_unix_code_packed_format_for_japanese",
"EUC_JP");
aliasTable.put("cseucpkdfmtjapanese", "EUC_JP");
aliasTable.put("x-euc-jp", "EUC_JP");
aliasTable.put("x-eucjp", "EUC_JP");

// For handing only JIS0202 and JIS0208 in linux
aliasTable.put("euc-jp-linux", "EUC_JP_LINUX");
========== 日本語用エンコーディング名別名一覧 END ==========


========== 全エンコーディング名別名一覧 START ==========
aliasTable.put("us-ascii", "ASCII");
aliasTable.put("ascii", "ASCII");
aliasTable.put("646", "ASCII"); // Solaris POSIX locale
aliasTable.put("iso_646.irv:1983", "ASCII"); // Linux POSIX locale
aliasTable.put("ansi_x3.4-1968", "ASCII"); // Caldera linux
aliasTable.put("iso646-us", "ASCII");
aliasTable.put("default", "ASCII"); // compatibility with obsolete "Default" converters
aliasTable.put("ascii7", "ASCII"); // compatibility with obsolete "Default" converters

// MIBenum: 4
aliasTable.put("8859_1", "ISO8859_1");
aliasTable.put("iso_8859-1:1987", "ISO8859_1");
aliasTable.put("iso-ir-100", "ISO8859_1");
aliasTable.put("iso_8859-1", "ISO8859_1");
aliasTable.put("iso-8859-1", "ISO8859_1");
aliasTable.put("iso8859-1", "ISO8859_1");
aliasTable.put("latin1", "ISO8859_1");
aliasTable.put("l1", "ISO8859_1");
aliasTable.put("ibm819", "ISO8859_1");
aliasTable.put("ibm-819", "ISO8859_1");
aliasTable.put("cp819", "ISO8859_1");
aliasTable.put("819", "ISO8859_1");
aliasTable.put("csisolatin1", "ISO8859_1");

// MIBenum: 5
aliasTable.put("8859_2", "ISO8859_2");
aliasTable.put("iso_8859-2:1987", "ISO8859_2");
aliasTable.put("iso-ir-101", "ISO8859_2");
aliasTable.put("iso_8859-2", "ISO8859_2");
aliasTable.put("iso-8859-2", "ISO8859_2");
aliasTable.put("iso8859-2", "ISO8859_2");
aliasTable.put("latin2", "ISO8859_2");
aliasTable.put("l2", "ISO8859_2");
aliasTable.put("ibm912", "ISO8859_2");
aliasTable.put("ibm-912", "ISO8859_2");
aliasTable.put("cp912", "ISO8859_2");
aliasTable.put("912", "ISO8859_2");
aliasTable.put("csisolatin2", "ISO8859_2");

// MIBenum: 6
aliasTable.put("8859_3", "ISO8859_3");
aliasTable.put("iso_8859-3:1988", "ISO8859_3");
aliasTable.put("iso-ir-109", "ISO8859_3");
aliasTable.put("iso_8859-3", "ISO8859_3");
aliasTable.put("iso-8859-3", "ISO8859_3");
aliasTable.put("iso8859-3", "ISO8859_3");
aliasTable.put("latin3", "ISO8859_3");
aliasTable.put("l3", "ISO8859_3");
aliasTable.put("ibm913", "ISO8859_3");
aliasTable.put("ibm-913", "ISO8859_3");
aliasTable.put("cp913", "ISO8859_3");
aliasTable.put("913", "ISO8859_3");
aliasTable.put("csisolatin3", "ISO8859_3");

// MIBenum: 7
aliasTable.put("8859_4", "ISO8859_4");
aliasTable.put("iso_8859-4:1988", "ISO8859_4");
aliasTable.put("iso-ir-110", "ISO8859_4");
aliasTable.put("iso_8859-4", "ISO8859_4");
aliasTable.put("iso-8859-4", "ISO8859_4");
aliasTable.put("iso8859-4", "ISO8859_4");
aliasTable.put("latin4", "ISO8859_4");
aliasTable.put("l4", "ISO8859_4");
aliasTable.put("ibm914", "ISO8859_4");
aliasTable.put("ibm-914", "ISO8859_4");
aliasTable.put("cp914", "ISO8859_4");
aliasTable.put("914", "ISO8859_4");
aliasTable.put("csisolatin4", "ISO8859_4");

// MIBenum: 8
aliasTable.put("8859_5", "ISO8859_5");
aliasTable.put("iso_8859-5:1988", "ISO8859_5");
aliasTable.put("iso-ir-144", "ISO8859_5");
aliasTable.put("iso_8859-5", "ISO8859_5");
aliasTable.put("iso-8859-5", "ISO8859_5");
aliasTable.put("iso8859-5", "ISO8859_5");
aliasTable.put("cyrillic", "ISO8859_5");
aliasTable.put("csisolatincyrillic", "ISO8859_5");
aliasTable.put("ibm915", "ISO8859_5");
aliasTable.put("ibm-915", "ISO8859_5");
aliasTable.put("cp915", "ISO8859_5");
aliasTable.put("915", "ISO8859_5");

// MIBenum: 9
aliasTable.put("8859_6", "ISO8859_6");
aliasTable.put("iso_8859-6:1987", "ISO8859_6");
aliasTable.put("iso-ir-127", "ISO8859_6");
aliasTable.put("iso_8859-6", "ISO8859_6");
aliasTable.put("iso-8859-6", "ISO8859_6");
aliasTable.put("iso8859-6", "ISO8859_6");
aliasTable.put("ecma-114", "ISO8859_6");
aliasTable.put("asmo-708", "ISO8859_6");
aliasTable.put("arabic", "ISO8859_6");
aliasTable.put("csisolatinarabic", "ISO8859_6");
aliasTable.put("ibm1089", "ISO8859_6");
aliasTable.put("ibm-1089", "ISO8859_6");
aliasTable.put("cp1089", "ISO8859_6");
aliasTable.put("1089", "ISO8859_6");

// MIBenum: 10
aliasTable.put("8859_7", "ISO8859_7");
aliasTable.put("iso_8859-7:1987", "ISO8859_7");
aliasTable.put("iso-ir-126", "ISO8859_7");
aliasTable.put("iso_8859-7", "ISO8859_7");
aliasTable.put("iso-8859-7", "ISO8859_7");
aliasTable.put("iso8859-7", "ISO8859_7");
aliasTable.put("elot_928", "ISO8859_7");
aliasTable.put("ecma-118", "ISO8859_7");
aliasTable.put("greek", "ISO8859_7");
aliasTable.put("greek8", "ISO8859_7");
aliasTable.put("csisolatingreek", "ISO8859_7");
aliasTable.put("ibm813", "ISO8859_7");
aliasTable.put("ibm-813", "ISO8859_7");
aliasTable.put("cp813", "ISO8859_7");
aliasTable.put("813", "ISO8859_7");

// MIBenum: 11
aliasTable.put("8859_8", "ISO8859_8");
aliasTable.put("iso_8859-8:1988", "ISO8859_8");
aliasTable.put("iso-ir-138", "ISO8859_8");
aliasTable.put("iso_8859-8", "ISO8859_8");
aliasTable.put("iso-8859-8", "ISO8859_8");
aliasTable.put("iso8859-8", "ISO8859_8");
aliasTable.put("hebrew", "ISO8859_8");
aliasTable.put("csisolatinhebrew", "ISO8859_8");
aliasTable.put("ibm916", "ISO8859_8");
aliasTable.put("ibm-916", "ISO8859_8");
aliasTable.put("cp916", "ISO8859_8");
aliasTable.put("916", "ISO8859_8");

// MIBenum: 12
aliasTable.put("8859_9", "ISO8859_9");
aliasTable.put("iso-ir-148", "ISO8859_9");
aliasTable.put("iso_8859-9", "ISO8859_9");
aliasTable.put("iso-8859-9", "ISO8859_9");
aliasTable.put("iso8859-9", "ISO8859_9");
aliasTable.put("latin5", "ISO8859_9");
aliasTable.put("l5", "ISO8859_9");
aliasTable.put("ibm920", "ISO8859_9");
aliasTable.put("ibm-920", "ISO8859_9");
aliasTable.put("cp920", "ISO8859_9");
aliasTable.put("920", "ISO8859_9");
aliasTable.put("csisolatin5", "ISO8859_9");

// MIBenum: ???
aliasTable.put("8859_13", "ISO8859_13");
aliasTable.put("iso_8859-13", "ISO8859_13");
aliasTable.put("iso-8859-13", "ISO8859_13");
aliasTable.put("iso8859-13", "ISO8859_13");


// MIBenum: ????
aliasTable.put("8859_15", "ISO8859_15_FDIS");
aliasTable.put("iso-8859-15", "ISO8859_15_FDIS");
aliasTable.put("iso_8859-15", "ISO8859_15_FDIS");
aliasTable.put("iso8859-15", "ISO8859_15_FDIS");
aliasTable.put("ibm923", "ISO8859_15_FDIS");
aliasTable.put("ibm-923", "ISO8859_15_FDIS");
aliasTable.put("cp923", "ISO8859_15_FDIS");
aliasTable.put("923", "ISO8859_15_FDIS");
aliasTable.put("latin0", "ISO8859_15_FDIS");
aliasTable.put("latin9", "ISO8859_15_FDIS");
aliasTable.put("csisolatin0", "ISO8859_15_FDIS");
aliasTable.put("csisolatin9", "ISO8859_15_FDIS");

// MIBenum: 106
aliasTable.put("utf-8", "UTF8");

// Alias recommended in RFC 1641
aliasTable.put("unicode-1-1-utf-8", "UTF8");

// MIBenum: 1010
aliasTable.put("unicode-1-1", "UnicodeBigUnmarked");

// MIBenum: 1000
aliasTable.put("iso-10646-ucs-2", "UnicodeBigUnmarked");

// Per Unicode standard
aliasTable.put("utf-16be", "UnicodeBigUnmarked");
aliasTable.put("utf-16le", "UnicodeLittleUnmarked");
aliasTable.put("utf-16", "UTF16");

// Used by drag-and-drop subsystem
aliasTable.put("x-utf-16be", "UnicodeBigUnmarked");
aliasTable.put("x-utf-16le", "UnicodeLittleUnmarked");

aliasTable.put("unicode", "Unicode");

// MIBenum: ????
aliasTable.put("ibm037", "Cp037");
aliasTable.put("ibm-037", "Cp037");
aliasTable.put("cp037", "Cp037");
aliasTable.put("037", "Cp037");

// MIBenum: ????
aliasTable.put("ibm273", "Cp273");
aliasTable.put("ibm-273", "Cp273");
aliasTable.put("cp273", "Cp273");
aliasTable.put("273", "Cp273");

// MIBenum: ????
aliasTable.put("ibm277", "Cp277");
aliasTable.put("ibm-277", "Cp277");
aliasTable.put("cp277", "Cp277");
aliasTable.put("277", "Cp277");

// MIBenum: ????
aliasTable.put("ibm278", "Cp278");
aliasTable.put("ibm-278", "Cp278");
aliasTable.put("cp278", "Cp278");
aliasTable.put("278", "Cp278");

// MIBenum: ????
aliasTable.put("ibm280", "Cp280");
aliasTable.put("ibm-280", "Cp280");
aliasTable.put("cp280", "Cp280");
aliasTable.put("280", "Cp280");

// MIBenum: ????
aliasTable.put("ibm284", "Cp284");
aliasTable.put("ibm-284", "Cp284");
aliasTable.put("cp284", "Cp284");
aliasTable.put("284", "Cp284");

// MIBenum: ????
aliasTable.put("ibm285", "Cp285");
aliasTable.put("ibm-285", "Cp285");
aliasTable.put("cp285", "Cp285");
aliasTable.put("285", "Cp285");

// MIBenum: ????
aliasTable.put("ibm297", "Cp297");
aliasTable.put("ibm-297", "Cp297");
aliasTable.put("cp297", "Cp297");
aliasTable.put("297", "Cp297");

// MIBenum: ????
aliasTable.put("ibm420", "Cp420");
aliasTable.put("ibm-420", "Cp420");
aliasTable.put("cp420", "Cp420");
aliasTable.put("420", "Cp420");

// MIBenum: ????
aliasTable.put("ibm424", "Cp424");
aliasTable.put("ibm-424", "Cp424");
aliasTable.put("cp424", "Cp424");
aliasTable.put("424", "Cp424");

// MIBenum: 2011
aliasTable.put("ibm437", "Cp437");
aliasTable.put("ibm-437", "Cp437");
aliasTable.put("cp437", "Cp437");
aliasTable.put("437", "Cp437");
aliasTable.put("cspc8codepage437", "Cp437");

// MIBenum: ????
aliasTable.put("ibm500", "Cp500");
aliasTable.put("ibm-500", "Cp500");
aliasTable.put("cp500", "Cp500");
aliasTable.put("500", "Cp500");

// MIBenum: ????
aliasTable.put("ibm737", "Cp737");
aliasTable.put("ibm-737", "Cp737");
aliasTable.put("cp737", "Cp737");
aliasTable.put("737", "Cp737");

// MIBenum: ????
aliasTable.put("ibm775", "Cp775");
aliasTable.put("ibm-775", "Cp775");
aliasTable.put("cp775", "Cp775");
aliasTable.put("775", "Cp775");

// MIBenum: ????
aliasTable.put("ibm838", "Cp838"); /* MDA */
aliasTable.put("ibm-838", "Cp838"); /* MDA */
aliasTable.put("cp838", "Cp838"); /* MDA */
aliasTable.put("838", "Cp838"); /* MDA */

// "Cp850"
// MIBenum: 2009
aliasTable.put("ibm850", "Cp850");
aliasTable.put("ibm-850", "Cp850");
aliasTable.put("cp850", "Cp850");
aliasTable.put("850", "Cp850");
aliasTable.put("cspc850multilingual", "Cp850");

// "Cp852"
// MIBenum: 2010
aliasTable.put("ibm852", "Cp852");
aliasTable.put("ibm-852", "Cp852");
aliasTable.put("cp852", "Cp852");
aliasTable.put("852", "Cp852");
aliasTable.put("cspcp852", "Cp852");

// "Cp855"
// MIBenum: 2046
aliasTable.put("ibm855", "Cp855");
aliasTable.put("ibm-855", "Cp855");
aliasTable.put("cp855", "Cp855");
aliasTable.put("855", "Cp855");
aliasTable.put("cspcp855", "Cp855");

// "Cp855"
// MIBenum: ???
aliasTable.put("ibm856", "Cp856");
aliasTable.put("ibm-856", "Cp856");
aliasTable.put("cp856", "Cp856");
aliasTable.put("856", "Cp856");

// "Cp857"
// MIBenum: 2047
aliasTable.put("ibm857", "Cp857");
aliasTable.put("ibm-857", "Cp857");
aliasTable.put("cp857", "Cp857");
aliasTable.put("857", "Cp857");
aliasTable.put("csibm857", "Cp857");

// "Cp860"
// MIBenum: 2048
aliasTable.put("ibm860", "Cp860");
aliasTable.put("ibm-860", "Cp860");
aliasTable.put("cp860", "Cp860");
aliasTable.put("860", "Cp860");
aliasTable.put("csibm860", "Cp860");

// MIBenum: 2049
aliasTable.put("ibm861", "Cp861");
aliasTable.put("ibm-861", "Cp861");
aliasTable.put("cp861", "Cp861");
aliasTable.put("cp-is", "Cp861");
aliasTable.put("861", "Cp861");
aliasTable.put("csibm861", "Cp861");

// MIBenum: 2013
aliasTable.put("ibm862", "Cp862");
aliasTable.put("ibm-862", "Cp862");
aliasTable.put("cp862", "Cp862");
aliasTable.put("862", "Cp862");
aliasTable.put("cspc862latinhebrew", "Cp862");

// MIBenum: 2050
aliasTable.put("ibm863", "Cp863");
aliasTable.put("ibm-863", "Cp863");
aliasTable.put("cp863", "Cp863");
aliasTable.put("863", "Cp863");
aliasTable.put("csibm863", "Cp863");

// MIBenum: 2051
aliasTable.put("ibm864", "Cp864");
aliasTable.put("ibm-864", "Cp864");
aliasTable.put("cp864", "Cp864");
aliasTable.put("csibm864", "Cp864");

// MIBenum: 2052
aliasTable.put("ibm865", "Cp865");
aliasTable.put("ibm-865", "Cp865");
aliasTable.put("cp865", "Cp865");
aliasTable.put("865", "Cp865");
aliasTable.put("csibm865", "Cp865");

// MIBenum: ????
aliasTable.put("ibm866", "Cp866");
aliasTable.put("ibm-866", "Cp866");
aliasTable.put("cp866", "Cp866");
aliasTable.put("866", "Cp866");
aliasTable.put("csibm866", "Cp866");

// MIBenum: ????
aliasTable.put("ibm868", "Cp868");
aliasTable.put("ibm-868", "Cp868");
aliasTable.put("cp868", "Cp868");
aliasTable.put("868", "Cp868");

// MIBenum: 2054
aliasTable.put("ibm869", "Cp869");
aliasTable.put("ibm-869", "Cp869");
aliasTable.put("cp869", "Cp869");
aliasTable.put("869", "Cp869");
aliasTable.put("cp-gr", "Cp869");
aliasTable.put("csibm869", "Cp869");

// MIBenum: ????
aliasTable.put("ibm870", "Cp870");
aliasTable.put("ibm-870", "Cp870");
aliasTable.put("cp870", "Cp870");
aliasTable.put("870", "Cp870");

// MIBenum: ????
aliasTable.put("ibm871", "Cp871");
aliasTable.put("ibm-871", "Cp871");
aliasTable.put("cp871", "Cp871");
aliasTable.put("871", "Cp871");

// MIBenum: ????
aliasTable.put("ibm874", "Cp874");
aliasTable.put("ibm-874", "Cp874");
aliasTable.put("cp874", "Cp874");
aliasTable.put("874", "Cp874");

// MIBenum: ????
aliasTable.put("ibm875", "Cp875");
aliasTable.put("ibm-875", "Cp875");
aliasTable.put("cp875", "Cp875");
aliasTable.put("875", "Cp875");

// MIBenum: ????
aliasTable.put("ibm918", "Cp918");
aliasTable.put("ibm-918", "Cp918");
aliasTable.put("cp918", "Cp918");
aliasTable.put("918", "Cp918");

// MIBenum: ????
aliasTable.put("ibm921", "Cp921");
aliasTable.put("ibm-921", "Cp921");
aliasTable.put("cp921", "Cp921");
aliasTable.put("921", "Cp921");

// MIBenum: ????
aliasTable.put("ibm922", "Cp922");
aliasTable.put("ibm-922", "Cp922");
aliasTable.put("cp922", "Cp922");
aliasTable.put("922", "Cp922");

// MIBenum: ????
aliasTable.put("ibm930", "Cp930"); /* MDA */
aliasTable.put("ibm-930", "Cp930"); /* MDA */
aliasTable.put("cp930", "Cp930"); /* MDA */
aliasTable.put("930", "Cp930"); /* MDA */

// MIBenum: ????
aliasTable.put("ibm933", "Cp933"); /* MDA */
aliasTable.put("ibm-933", "Cp933"); /* MDA */
aliasTable.put("cp933", "Cp933"); /* MDA */
aliasTable.put("933", "Cp933"); /* MDA */

// MIBenum: ????
aliasTable.put("ibm935", "Cp935"); /* MDA */
aliasTable.put("ibm-935", "Cp935"); /* MDA */
aliasTable.put("cp935", "Cp935"); /* MDA */
aliasTable.put("935", "Cp935"); /* MDA */

// MIBenum: ????
aliasTable.put("ibm937", "Cp937"); /* MDA */
aliasTable.put("ibm-937", "Cp937"); /* MDA */
aliasTable.put("cp937", "Cp937"); /* MDA */
aliasTable.put("937", "Cp937"); /* MDA */

// MIBenum: ????
aliasTable.put("ibm939", "Cp939"); /* MDA */
aliasTable.put("ibm-939", "Cp939"); /* MDA */
aliasTable.put("cp939", "Cp939"); /* MDA */
aliasTable.put("939", "Cp939"); /* MDA */

// MIBenum: ????
aliasTable.put("ibm942", "Cp942"); /* MDA */
aliasTable.put("ibm-942", "Cp942"); /* MDA */
aliasTable.put("cp942", "Cp942"); /* MDA */
aliasTable.put("942", "Cp942"); /* MDA */

// MIBenum: ????
aliasTable.put("ibm943", "Cp943"); /* ibm.3158 */
aliasTable.put("ibm-943", "Cp943"); /* ibm.3158 */
aliasTable.put("cp943", "Cp943"); /* ibm.3158 */
aliasTable.put("943", "Cp943"); /* ibm.3158 */

// MIBenum: ????
aliasTable.put("ibm948", "Cp948"); /* MDA */
aliasTable.put("ibm-948", "Cp948"); /* MDA */
aliasTable.put("cp948", "Cp948"); /* MDA */
aliasTable.put("948", "Cp948"); /* MDA */

// MIBenum: ????
aliasTable.put("ibm949", "Cp949"); /* MDA */
aliasTable.put("ibm-949", "Cp949"); /* MDA */
aliasTable.put("cp949", "Cp949"); /* MDA */
aliasTable.put("949", "Cp949"); /* MDA */

// MIBenum: ????
aliasTable.put("ibm950", "Cp950"); /* MDA */
aliasTable.put("ibm-950", "Cp950"); /* MDA */
aliasTable.put("cp950", "Cp950"); /* MDA */
aliasTable.put("950", "Cp950"); /* MDA */

// MIBenum: ????
aliasTable.put("ibm964", "Cp964"); /* MDA */
aliasTable.put("ibm-964", "Cp964"); /* MDA */
aliasTable.put("cp964", "Cp964"); /* MDA */
aliasTable.put("964", "Cp964"); /* MDA */

// MIBenum: ????
aliasTable.put("ibm970", "Cp970"); /* MDA */
aliasTable.put("ibm-970", "Cp970"); /* MDA */
aliasTable.put("cp970", "Cp970"); /* MDA */
aliasTable.put("970", "Cp970"); /* MDA */

// MIBenum: ????
aliasTable.put("ibm1006", "Cp1006");
aliasTable.put("ibm-1006", "Cp1006");
aliasTable.put("cp1006", "Cp1006");
aliasTable.put("1006", "Cp1006");

// MIBenum: ????
aliasTable.put("ibm1025", "Cp1025");
aliasTable.put("ibm-1025", "Cp1025");
aliasTable.put("cp1025", "Cp1025");
aliasTable.put("1025", "Cp1025");

// MIBenum: ????
aliasTable.put("ibm1026", "Cp1026");
aliasTable.put("ibm-1026", "Cp1026");
aliasTable.put("cp1026", "Cp1026");
aliasTable.put("1026", "Cp1026");

// MIBenum: ????
aliasTable.put("ibm1097", "Cp1097");
aliasTable.put("ibm-1097", "Cp1097");
aliasTable.put("cp1097", "Cp1097");
aliasTable.put("1097", "Cp1097");

// MIBenum: ????
aliasTable.put("ibm1098", "Cp1098");
aliasTable.put("ibm-1098", "Cp1098");
aliasTable.put("cp1098", "Cp1098");
aliasTable.put("1098", "Cp1098");

// MIBenum: ????
aliasTable.put("ibm1112", "Cp1112");
aliasTable.put("ibm-1112", "Cp1112");
aliasTable.put("cp1112", "Cp1112");
aliasTable.put("1112", "Cp1112");

// MIBenum: ????
aliasTable.put("ibm1122", "Cp1122");
aliasTable.put("ibm-1122", "Cp1122");
aliasTable.put("cp1122", "Cp1122");
aliasTable.put("1122", "Cp1122");

// MIBenum: ????
aliasTable.put("ibm1123", "Cp1123");
aliasTable.put("ibm-1123", "Cp1123");
aliasTable.put("cp1123", "Cp1123");
aliasTable.put("1123", "Cp1123");

// MIBenum: ????
aliasTable.put("ibm1124", "Cp1124");
aliasTable.put("ibm-1124", "Cp1124");
aliasTable.put("cp1124", "Cp1124");
aliasTable.put("1124", "Cp1124");

// MIBenum: ????
aliasTable.put("ibm1381", "Cp1381"); /* MDA */
aliasTable.put("ibm-1381", "Cp1381"); /* MDA */
aliasTable.put("cp1381", "Cp1381"); /* MDA */
aliasTable.put("1381", "Cp1381"); /* MDA */

// MIBenum: ????
aliasTable.put("ibm1383", "Cp1383"); /* MDA */
aliasTable.put("ibm-1383", "Cp1383"); /* MDA */
aliasTable.put("cp1383", "Cp1383"); /* MDA */
aliasTable.put("1383", "Cp1383"); /* MDA */

// Specialized auto-detection for Japanese charsets
aliasTable.put("jis auto detect", "JISAutoDetect");

// MIBenum: 16/39
aliasTable.put("jis", "ISO2022JP");
aliasTable.put("iso-2022-jp", "ISO2022JP");
aliasTable.put("csiso2022jp", "ISO2022JP");
aliasTable.put("jis_encoding", "ISO2022JP");
aliasTable.put("csjisencoding", "ISO2022JP");

// MIBenum: 17/2024
aliasTable.put("shift_jis", "MS932");
aliasTable.put("ms_kanji", "MS932");
aliasTable.put("csshiftjis", "MS932");
aliasTable.put("windows-31j", "MS932");
aliasTable.put("cswindows31j", "MS932");
aliasTable.put("x-sjis", "MS932");

// JIS-defined Shift JIS
aliasTable.put("\u30b7\u30d5\u30c8\u7b26\u53f7\u5316\u8868\u73fe",
"SJIS"); // JIS name
aliasTable.put("pck", "SJIS"); // Solaris PCK

// MIBenum: 18
// Japanese EUC
aliasTable.put("eucjis", "EUC_JP");
aliasTable.put("euc-jp", "EUC_JP");
aliasTable.put("eucjp", "EUC_JP");
aliasTable.put("extended_unix_code_packed_format_for_japanese",
"EUC_JP");
aliasTable.put("cseucpkdfmtjapanese", "EUC_JP");
aliasTable.put("x-euc-jp", "EUC_JP");
aliasTable.put("x-eucjp", "EUC_JP");

// For handing only JIS0202 and JIS0208 in linux
aliasTable.put("euc-jp-linux", "EUC_JP_LINUX");

// MIBenum: 874
aliasTable.put("windows-874", "MS874");

// MIBenum: 2250
aliasTable.put("windows-1250", "Cp1250");

// MIBenum: 2251
aliasTable.put("windows-1251", "Cp1251");

// MIBenum: 2252
aliasTable.put("windows-1252", "Cp1252");

// MIBenum: 2253
aliasTable.put("windows-1253", "Cp1253");

// MIBenum: 2254
aliasTable.put("windows-1254", "Cp1254");

// MIBenum: 2255
aliasTable.put("windows-1255", "Cp1255");

// MIBenum: 2256
aliasTable.put("windows-1256", "Cp1256");

// MIBenum: 2257
aliasTable.put("windows-1257", "Cp1257");

// MIBenum: 2258
aliasTable.put("windows-1258", "Cp1258");

// MIBenum: ????
aliasTable.put("ibm33722", "Cp33722"); /* MDA */
aliasTable.put("ibm-33722", "Cp33722"); /* MDA */
aliasTable.put("cp33722", "Cp33722"); /* MDA */
aliasTable.put("33722", "Cp33722"); /* MDA */

// Russian KOI8-R
aliasTable.put("koi8-r", "KOI8_R");
aliasTable.put("koi8", "KOI8_R");
aliasTable.put("cskoi8r", "KOI8_R");

// Simplified Chinese
aliasTable.put("gb2312", "EUC_CN");
aliasTable.put("gb2312-80", "EUC_CN");
aliasTable.put("gb2312-1980", "EUC_CN");
aliasTable.put("euc-cn", "EUC_CN");
aliasTable.put("euccn", "EUC_CN");

aliasTable.put("big5", "Big5");
aliasTable.put("big5-hkscs", "Big5_HKSCS");
aliasTable.put("big5_hkscs", "Big5_HKSCS");
// Added for future compatibility, explicit mapping to Unicode 2.1
aliasTable.put("big5-hkscs-unicode21", "Big5_HKSCS");

// Traditional Chinese
aliasTable.put("cns11643", "EUC_TW");
aliasTable.put("euc-tw", "EUC_TW");
aliasTable.put("euctw", "EUC_TW");

// Korean
aliasTable.put("ksc5601", "EUC_KR");
aliasTable.put("euc-kr", "EUC_KR");
aliasTable.put("euckr", "EUC_KR");
aliasTable.put("ks_c_5601-1987", "EUC_KR");
aliasTable.put("ksc5601-1987", "EUC_KR");
aliasTable.put("ksc5601_1987", "EUC_KR");
aliasTable.put("ksc_5601", "EUC_KR");
aliasTable.put("5601", "EUC_KR");

aliasTable.put("ksc5601-1992", "Johab");
aliasTable.put("ksc5601_1992", "Johab");
aliasTable.put("ms1361", "Johab");

aliasTable.put("windows-949", "MS949");

// Thai
aliasTable.put("tis620.2533", "TIS620");

// Variants
aliasTable.put("cp942c", "Cp942C");
aliasTable.put("cp943c", "Cp943C");
aliasTable.put("cp949c", "Cp949C");
========== 全エンコーディング名別名一覧 END ==========

圧縮 解凍(Linux)2

rm [-dfirv] 名前
オプション
-d ディレクトリのリンクをはずします。管理者権限が必要です。
-f 存在しないファイルがあってもエラーを返しません。
-i ファイルを削除してよいかを確認します。
-r ディレクトリを再帰的に(中身ごと)削除します。
-v 経過を表示します。
名前 削除するファイルまたはディレクトリを指定します。
使用例:
$ rm file1* 「file1」ではじまるファイルをすべて削除します。
$ rm -r dir1 「dir1」ディレクトリをファイルごと削除します。


zip [-dlmqzr] [-圧縮率] 圧縮ファイル ファイル
オプション
-d 圧縮ファイル内から指定したファイルを削除します。
-l 改行コードを「LF」から「CR+LF」に変換します。「-ll」で「CR+LF」から「LF」に変換できます。
-m 圧縮ファイル内から指定したファイルを移動します。
-q クイック圧縮をします。
-z 圧縮ファイルにコメントを追加します。「unzip -z」でコメントを表示できます。
-圧縮率 圧縮率を1~9の数字で指定します。デフォルトは6です。数字が大きいほど
    圧縮率は高くなりますが、圧縮に時間がかかります。
-r recurse into directories
圧縮ファイル 圧縮ファイル名を指定します。一般的に拡張子は「.zip」です。
ファイル 圧縮するファイルを指定します。
使用例:
$ zip file1.zip file1 「file1」を「file1.zip」というファイル名で圧縮します。
$ zip -r file.zip file(ディレクトリ)

unzip [-lopzZ] 圧縮ファイル ファイル
オプション
-l 圧縮ファイル内のファイルをリスト表示します。
-o ファイルの上書き確認プロンプトを表示せずに強制的に上書きします。
-p 圧縮ファイルの内容を表示します。
-z 圧縮ファイルのコメントを表示します。「zip -z」でコメントを付加できます。
-Z 圧縮情報を表示します。「zipinfo」というコマンドと同様です。
圧縮ファイル 復元するファイル名を指定します。
ファイル 復元するファイルを指定します。

使用例:
$ unzip file1.zip 「file1.zip」を復元します。
$ unzip -o file1.zip 「file1」を復元します。ファイルは強制的に上書きします。


compress [-cdfvr] ファイル
オプション
-c 圧縮データを標準出力します。既存のファイルは変更されません。
-d 圧縮ファイル(*.Z)を復元します。復元するファイルの拡張子「.Z」は省略できます。
-f 圧縮後のファイルサイズが元ファイルのサイズを上回る場合でも強制的に圧縮します。
-v 圧縮結果(圧縮率等)を表示します。
-r ディレクトリ内の全ファイルを再帰的に圧縮します。
ファイル 圧縮(復元)するファイル(ディレクトリ)を指定します。
使用例:
$ compress -v *.html 拡張子「.html」のファイルを圧縮します。圧縮結果も表示します。

uncompress [-cfvr] ファイル
オプション
-c 圧縮データを標準出力します。既存のファイルは変更されません。zcat コマンドと同様となります。
-f 同名のファイルが存在する場合、上書きの確認用プロンプトを表示しないで強制的に上書きします。
-v 復元結果を表示します。
-r ディレクトリ内の全ファイルを再帰的に復元します。
ファイル 復元するファイル(ディレクトリ)を指定します。拡張子「.Z」は省略可能です。
使用例:
$ uncompress -v *.html 拡張子「.html.Z」のファイルを復元します。復元結果も表示します。

解凍例
gzip―→tar.gz
  tar zxfv xxxxxxx.tar.gz
  gunzip xxxxx.tar.gz
  tar xvf xxxx.tar
  gzip -d xxxx.gz
  tar -xvf xxx.tar
  gunzip < xxx.tar.tar | tar xvf -

zip―→zip
  unzip xxxxx.zip

bzip2―→tar.bz2
  tar jxfv xxxxxx.tar.bz2
  tar Ixvf xxxxxx.tar.bz2

tar―→tar
  tar xvf xxxxxx.tar

bin―→bin
  ./xxxxxx.bin

rpm―→rpm
  インストール -ivh
  rpm -ivh huga-1.0.0.i386.rpm

  アップデート(未対象ファイルのみ) -Uvh
  rpm -Uvh huge-1.1.0.i386.rpm
  アップデート(古対象ファイルのみ) -Fvh
  rpm -Fvh huga-1.1.0.i386.rpm

  パッケージ確認
  (***が存在するか?) -q
  rpm -q ***
  rpm -qa | egrep ***

  関連表示
  (***と一緒に入ったものは?) -ql
  rpm -ql huga

  アンインストール -e
  rpm -e ***

lzh―→lzh
  lha e compress.lzh


#include "unistd.h" // babylon //
#include "getopt.h" // dictconv //
Genius、Meikyo、南山堂、百科词典和知惠藏,都是最新版本。
http://info.babylon.com/glossaries/8FF6/Genius_English_Japanese.BGL
http://info.babylon.com/glossaries/C6AB/Genius_English_Japanese_Big.BGL
http://info.babylon.com/glossaries/93C5/Genius_Japanese_English.BGL
http://info.babylon.com/glossaries/C6C0/Genius_Japanese_English_Big_In.BGL
http://info.babylon.com/glossaries/A488/Meikyo_Japanese_Japanese.BGL
http://dn.altech-ads.com/babylon/nanzando.bgl
http://dn.altech-ads.com/babylon/mypedia.bgl
http://dn.altech-ads.com/babylon/chiezo2005.bgl

圧縮 解凍(Linux)1

解凍コマンド一覧拡張子 圧縮形式  コマンド例
.tar.gz          gzip       $ tar zxvf ファイル名
.tar.bz2         bzip2       $ tar jxvf ファイル名
.gz            gzip       $ gunzip ファイル名 または $ gzip -d ファイル名
.bz2           bzip2       $ bunzip2 ファイル名 または $ bzip2 -d ファイル名
.lha または.lzh      lzh        $ lha x ファイル名
.zip           zip        $ unzip ファイル名
.jar           jar        $ jar xf ファイル名
圧縮コマンド一覧拡張子 圧縮形式  コマンド
.tar.gz          gzip       $ tar zcvf ファイル名.tar.gz 圧縮対象
.tar.bz2         bzip2       $ tar jcvf ファイル名.tar.bz2 圧縮対象
.gz            gzip       $ gzip 圧縮対象
.bz2           bzip2       $ bzip2 圧縮対象
.lha           lzh        $ lha c ファイル名.lzh 圧縮対象
.zip           zip        $ zip ファイル名.zip 圧縮対象
.jar           jar        $ jar cf ファイル名.jar 圧縮対象

コマンドtar
複数のファイルを一つのファイルにまとめるアーカイブ形式の一つです。
gzipなどと組み合わせて使用されることが多いようです。
主なオプション
-c (create) : 新しいアーカイブを作成します。
-x (extract) : アーカイブからファイルを抽出します。
-v (verbose) : 処理したファイルの一覧を詳しく出力します。
-f (file)アーカイブファイルまたはデバイスを指定します。(デフォルトは/dev/rmt0)
-z (gzip,unzip) : アーカイブを gzip にファルタします。
-j (bzip2) : アーカイブを bzip2 にフィルタします。

gzip, gunzip
ファイル圧縮形式の一つです。 tarと組み合わせて使用されることが多いようです。
主なオプション
-d (decompress) : 解凍(伸展)します。
-c (stdout) : 出力を標準出力に書き出し、元ファイルは変更しません。
-l (list) : 圧縮された個々のファイルについての情報を列挙します。
-r (recursive) : ディレクトリ構造を再帰的にたどります。

bzip2, bunzip2
ファイル圧縮形式の一つです。 gzipやZIPといったデータ圧縮法と比べ、より高い圧縮率です。
主なオプション
-d (decompress) : 解凍(伸展)します。
-c (stdout) : 出力を標準出力に書き出し、元ファイルは変更しません。
-z (compress) : 起動された名前にかかわらず圧縮します。
zip, unzip
zip は、Windows でよく使われる圧縮形式です。

lha
lha は、Windows でよく使われる圧縮形式です。 LZH は日本人によって作られた圧縮形式です。
主なオプション
x : アーカイブファイルからファイルを抽出する
c : アーカイブファイルの作成する

jar
jarは、Javaプログラムの実行に必要なクラスファイルやデータファイル
を一つにまとめるために使われます。
主なオプション
c : アーカイブを新規作成します。
t : アーカイブの内容を一覧表示します。
x : 指定の(またはすべての)ファイルをアーカイブから抽出します。
u : 既存アーカイブを更新します。
v : 標準出力に詳細な出力を生成します。
f : アーカイブファイル名を指定します。
m : 指定のマニフェストファイルからマニフェスト情報を取り込みます。
O : 格納のみ.ZIP 圧縮を使用しません。
M : エントリのマニフェストファイルを作成しません
i : 指定の jar ファイルのインデックス情報を生成します。
C : 指定のディレクトリに変更し,以下のファイルを取り込みます。

VBA10進16進+gb2312表

10進数を16進数に変換
Function Dec2Hex(Dec As Long) As String
Dec2Hex = Hex(Dec)
End Function

16進数を10進数に変換
Function Hex2Dec(Hex As String) As Long
Hex2Dec = Val("&H" & Hex)
End Function

16進数表示による演算の例
Sub TestHex()
MsgBox Hex(&Ha + &Hd)
End Sub

Sub chrAndChrW()

Dim iLoop As Integer
Application.ScreenUpdating = False

For iLoop = 1 To 9999
Cells(iLoop, 1) = CStr(iLoop)
Cells(iLoop, 2) = CStr(Hex(iLoop))
Cells(iLoop, 3) = Chr(iLoop)
Cells(iLoop, 4) = ChrW(iLoop)

If Cells(iLoop, 3) = Cells(iLoop, 4) Then
Cells(iLoop, 5) = "○"
Else
Cells(iLoop, 5) = "×"
End If
Next iLoop
Application.ScreenUpdating = True
Application.StatusBar = False
Cells(1, 1).Select

End Sub

http://www.chi2ko.com/tool/CJK.htm
http://www.kishugiken.co.jp/cn/code09c.html