Shift_KSハングルを通常のハングルに変換する(Java版)

使い方

左のテキストエリアにShift_KS文字列を書き込んで 「O.K.」ボタンを押してください。
すると、右のテキストエリアにハングルで表示されます。
これをマウスの右クリックなどでコピーして、目的の位置に貼り付けてください。

使用例

もしも「アンニョンハセヨ」とハングルで書いてあるはずなのに、 「照括馬室推」のように文字化けしていた場合、これは Shift_KSコードとかKorean Writerコードとか呼ばれる 特殊なコードになっている可能性が高いです。

この文字列を左のテキストエリアに貼り付けて、「O.K.」ボタンを押すと、 右のテキストエリアに「안녕하세요」と表示されるはずです。

動作確認

Java1.1では、うまく動かないかもしれません。(原因調査中)

日本語版Windows98(ただし、Java1.4をインストールしている)で テストしてみたところ、 Internet Explorer 6 、Netscape 7、及びOpera 7 でうまく動きました。
(ブラウザが使用しているJavaのバージョンがちょっと気になりますが....)

問題点

Javaアプレットを使っているためか、 ページを開いた時に、Tabキーで項目を移動できません。 (ただし、一旦別のウインドウに移ってから、もう一度 このページに戻ると、IE6とNetscape7では Tabキーで項目を移動できました。 Opera7ではどうしてもマウスを使わないとフォームなどを アクティブにできませんでした。)
マウスを使っている分には、別に困りはしないのですが....。

記号や漢字、仮名などは、一部復元できない文字があります。 これは、Shift_JISからユニコードへの変換テーブルで 変換できないからです。 変換テーブルはShift_JIS用であって、 Shift_KSコードの文字の中には変換できないものがあるからです。 (ハングル部分に関しては、偶然ですが、うまく変換できるわけです。)
たとえば、片仮名の「カキクケコ」という文字列を KSコードで(euc-krコードで)書いて、これをShift_KSコードに 変換したものは、元に復元できません。 テストファイル「kakikukeko.htm」で 実験してみてください。

ひょっとしたら、ブラウザが使用しているJavaのバージョンによっては 動かないのかもしれません。 実際、Netscape4.5(Java Consoleでは「Java 1.1.5」と表示される)では
# Applet exception: error: java.lang.ClassFormatError: Bad major version number
とエラー表示されます。 (アプレットのコンパイルに使ったのはJava 1.4です。)

2003年11月30日(日)追記:
javac -target 1.1 SksKs.java
でコンパイルし直してみました。 これだとNetscape4.5でも動いたです、が、しかし、ハングルはすべて「?」で 表示されていました....。

どこがJavaなのか?

javaアプレット内で定義したsksToksという関数を JavaScriptから呼び出しています。

javaアプレットのソースコードは SksKs.java です。 内容は、次の通りです:

import java.awt.*;
public class SksKs extends java.applet.Applet {
    byte[] myByteArray = null;
    String myDecodedString = null;
    public String sksToKs(String mystr) {
	if(mystr.equals("")) return "";
	
	try{
	    myByteArray = mystr.getBytes("EUCJIS");
	}catch(Exception e) {
	}
	
	try{
	    myDecodedString = new String(myByteArray, "KSC5601");
	}catch(Exception e) {
	}

	return myDecodedString;
    }

}


2003年11月28日(金)作成
2003年12月27日(土)修正