Escape Codec Library: ecl.js
Shift_JISエンコードやEUC-JPエンコードなども可能な escape エンコード・デコード関数のライブラリ
- 文字列をすべてのコンピュータで読めるような形式に変換したり、変換されたものを元の文字列にデコードすることができる関数のライブラリです。
- ビルトイン関数
escape()
, unescape()
とは異なり、どの種類のブラウザでも同じ変換結果が得られます。
- JISコード変換テーブルを搭載し、従来JavaScriptでは実現が困難であった、Shift_JISコードやEUC-JPコードなどの文字コードとしてのエンコード・デコードも可能となっています。なお、この変換テーブルには、直接漢字は記述せず、Unicode 番号を圧縮したデータをASCIIコードの文字で記述しているので、任意の文字コードで使えるという特徴があります。
- Internet Explorer 5.0以上、Netscape 7、Operaなどで使用可能です。
ダウンロード: http://www.vector.co.jp/soft/dl/other/java/se342855.html (Ver.041208)
ダウンロード(JSファイルのみ): ecl.js (Ver.041208)
実行: TransEscape.html(ecl.js を使用したスクリプトです)
関数の説明
- ◆
EscapeSJIS(string)
- string をShift_JISコードのタイプで escape エンコードした値を返します。
- iモードの絵文字領域の文字も扱うことができます。
- ◆
UnescapeSJIS(escapedString)
- Shift_JISコードのタイプで escape エンコードされた escapedString を元の文字列にデコードした値を返します。
- ◆
EscapeEUCJP(string)
- string をEUC-JPコードのタイプで escape エンコードした値を返します。
- ◆
UnescapeEUCJP(escapedString)
- EUC-JPコードのタイプで escape エンコードされた escapedString を元の文字列にデコードした値を返します。
- ◆
EscapeJIS7(string)
- string をJISコードのタイプで escape エンコードした値を返します。
- 半角カタカナも使用可能で、7ビットでエンコードされます。
- ◆
UnescapeJIS7(escapedString)
- JISコードのタイプで escape エンコードされた escapedString を元の文字列にデコードした値を返します。
- 7ビットでエンコードされた半角カタカナもデコードすることができます。
- ◆
EscapeJIS8(string)
- string をJISコードのタイプで escape エンコードした値を返します。
- 半角カタカナは、8ビットでエンコードされます。
- ◆
UnescapeJIS8(escapedString)
- JISコードのタイプで escape エンコードされた escapedString を元の文字列にデコードした値を返します。
- 8ビットでエンコードされた半角カタカナもデコードすることができます。
- ◆
EscapeUnicode(string)
- string を Unicode のタイプで escape エンコードした値を返します。
- IE4.0以上の
escape()
と互換性があります。
- ◎ライブラリから切り取って単体で使用することも可能です。
- ◆
UnescapeUnicode(escapedString)
- Unicode のタイプで escape エンコードされた escapedString を元の文字列にデコードした値を返します。
- IE4.0以上の
unescape()
と互換性があります。
- ◎ライブラリから切り取って単体で使用することも可能です。
- ◆
EscapeUTF7(string)
- string を UTF-7コードのタイプで escape エンコードした値を返します。
- ◎ライブラリから切り取って単体で使用することも可能です。
- ◆
UnescapeUTF7(escapedString)
- UTF-7コードの escapedString を元の文字列にデコードした値を返します。
- ◎ライブラリから切り取って単体で使用することも可能です。
- ◆
EscapeUTF8(string)
- string を UTF-8コードのタイプで escape エンコードした値を返します。
- IE5.5 以上で実装されている
encodeURI()
または encodeURIComponent()
とは、エンコードする文字の範囲が異なるため、同一の値は得られませんが、同じく IE5.5 以上で実装される decodeURI()
, decodeURIComponent()
で問題なくデコードすることができます。
- ◎ライブラリから切り取って単体で使用することも可能です。
- ※
encodeURI()
, encodeURIComponent()
と同等の機能が必要な場合は、TransURI (UTF-8) を使用してください。
- ◆
UnescapeUTF8(escapedString)
- UTF-8コードのタイプで escape エンコードされた escapedString を元の文字列にデコードした値を返します。
- IE5.5 以上で実装されている
decodeURI()
, decodeURIComponent()
と互換性があります。
- ◎ライブラリから切り取って単体で使用することも可能です。
- ◎ビルトイン関数の
decodeURI()
よりも高速にデコードします(IE6.0で確認)
- ◆
EscapeUTF16LE(string)
- string を UTF-16LE(リトルエンディアン)コードのタイプで escape エンコードした値を返します。
- ◎ライブラリから切り取って単体で使用することも可能です。
- ◆
UnescapeUTF16LE(escapedString)
- UTF-16LE(リトルエンディアン)コードのタイプで escape エンコードされた escapedString を元の文字列にデコードした値を返します。
- ◎ライブラリから切り取って単体で使用することも可能です。
- ◆
GetEscapeCodeType(escapedString)
- escape エンコードされた escapedString を解析し、どのコードのタイプかを判定します。
- ※半角カタカナのみからなる文字列をエンコードしたものや、一部分を抜き出したもの、壊れたものなどは、正確に判定できない場合があります。
- ※UTF-7は判定されません。
- ※コードのタイプが ASCII の場合、"EUCJP" と判定されます。
- ◎ライブラリから切り取って単体で使用することも可能です。
- ◎以下のようにすることで、自動判別機能付き Unescape 関数が実現します。
UnescapeAutoDetect=function(str){
return window["Unescape"+GetEscapeCodeType(str)](str)
};
- ◆
JCT11280
【String Object】
- JIS規格(JIS X 0208-1997)に取り込まれている文字に加えて、Windowsで使用できる○付き数字やiモードの絵文字領域の文字(Shift_JIS および Unicode 系のコードで使用可能)なども加えた11280文字(未定義領域も含む)が、JISコード順で代入されています。
これを生成する関数は、11280文字分のUnicode 番号を差分圧縮して、ASCIIコードの文字のみを使って符号化したデータとデコードプログラムからなり、ファイル読み込み時に実行されて、元の文字を生成するようになっています。この仕組みにより、11280文字を記述するのに必要なバイト数の半分近くにまでサイズが縮小され、そして漢字等が直接記述されていないので、任意の文字コードで使用することが可能となります。
また、</ といったブラウザを混乱させるおそれのある文字列も含まれていないので、HTMLファイルに直接この生成関数を記述することも可能です。
EscapeSJIS()
, UnescapeSJIS()
で使用しています。
- ◆
JCT8836
【String Object】
- 上記の
JCT11280
の先頭から8836文字までが代入されています。
EscapeEUCJP()
, UnescapeEUCJP()
, EscapeJIS7()
, UnescapeJIS7()
, EscapeJIS8()
, UnescapeJIS8()
で使用しています。
その他
- Shift_JIS、EUC-JP、JISコードでは、JISコード変換テーブルに無い文字(JIS X 0212-1990 の補助漢字など)は「・」となりますので注意してください。
- ○付き数字などの機種依存文字が不要、もしくはあってはならない場合は、JISコード変換テーブルに JIS X 0208-1997 に準拠した jisx0208.js を使用してください。
手順は、ecl.js に含まれる JCT11280
と JCT8836
の生成関数を削除、jisx0208.js の JISX0208
生成関数を追加した後に、以下の2行を追加します。
JCT8836=Function("var s=JISX0208,t=s.substring(690,1204);return s+t+t")();
JCT11280=Function("var s=JCT8836,t=s.substring(8225);return s+t+t+t+t")();
- 現在のバージョンでは、Netscape 4.x での動作は保障していません。
- Escape Codec Library を使うことによって不利益等が生じたとしても、当方では一切責任は負いません。
ヌルコムアーカイブス・デジタル制作室