エンコード(文字コード)を指定してください。 このエンコードで使えない文字を数値文字参照 (「가」の形でユニコード番号を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(); } }