エンコード(文字コード)を指定してください。 このエンコードで使えない文字を数値文字参照 (「가」の形でユニコード番号を10進数であらわした物) に変換します。
まず、エンコードを指定してください。 方法は2つあります。
左のテキストエリアに文字列を書き込んで
「O.K.」ボタンを押してください。
すると、右のテキストエリアに変換結果が表示されます。
これをマウスの右クリックなどでコピーして、目的の位置に貼り付けてください。
エンコーディング名は、たとえば、 http://java.sun.com/products/jdk/1.2/docs/guide/internat/encoding.doc.html を参考にしてください。 (Javaランタイムのバージョンによって、または各ベンダ(Javaランタイムの 製造者)によって、使えるエンコーディング名は異なります。)
Java1.1では、うまく動かないかもしれません。(原因調査中)
日本語版Windows98(ただし、Java1.4をインストールしている)で
テストしてみたところ、
Internet Explorer 6 、Netscape 7、及びOpera 7
でうまく動きました。
Netscape4.5では動きませんでした。
Javaアプレットを使っているためか、
ページを開いた時に、Tabキーで項目を移動できません。
(ただし、一旦別のウインドウに移ってから、もう一度
このページに戻ると、IE6とNetscape7では
Tabキーで項目を移動できました。
Opera7ではどうしてもマウスを使わないとフォームなどを
アクティブにできませんでした。)
マウスを使っている分には、別に困りはしないのですが....。
ひょっとしたら、ブラウザが使用している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 UnicodeToCharEntities.java
でコンパイルし直してみました。
でも、Netscape4.5でうまく動かなかったです。
エラー表示はなかったのですが、ボタンを押しても
変換されず、ブラウザが固まったような、変な感じになりました。
javaアプレット内で定義した convertToCharEntitiesUnlessEncodable という関数を JavaScriptから呼び出しています。
javaアプレットのソースコードは UnicodeToCharEntities.java です。 内容は、次の通りです:
import java.awt.*;
import java.io.*;
public class UnicodeToCharEntities extends java.applet.Applet {
int getUnicodeNumber(char ch) {
return (int)ch;
}
boolean isEncodable(char ch, String enc) {
String originalString = new Character(ch).toString();
byte[] encodedByteArray = null;
String decodedString = null;
try{
encodedByteArray = originalString.getBytes(enc);
}catch(UnsupportedEncodingException e){
return false;
}catch(Exception e){
}
try{
decodedString = new String(encodedByteArray, enc);
}catch(Exception e){
}
return decodedString.equals(originalString);
}
public String convertToCharEntitiesUnlessEncodable(String orig, String enc) {
StringBuffer outputString = new StringBuffer("");
for(int i = 0; i < orig.length(); ++i){
if(this.isEncodable(orig.charAt(i), enc)) {
outputString.append(orig.charAt(i));
} else {
outputString.append("" + this.getUnicodeNumber(orig.charAt(i)) +";");
}
}
return outputString.toString();
}
}