ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript 文字セットのエンコードとデコードの詳細

JavaScript 文字セットのエンコードとデコードの詳細

高洛峰
高洛峰オリジナル
2017-02-04 09:31:581487ブラウズ

1. 文字セット

1) 文字とバイト (文字)

文字とは、文字化けを含むさまざまなテキストや記号の総称であり、1 文字は 1 ~ n バイトに相当し、1 バイトは 8 ビットに相当します。 bit 0 または 1 で表されます。

2) 文字セット

文字セットは複数の文字の集合であり、各文字セットには異なる数の文字が含まれます: ASCII 文字セット、GB2312 文字セット、Unicode 文字セットなど。

3) 文字エンコーディング

文字エンコーディングはシンボルをコンピューターが読み取り可能なバイナリに変換すること、デコードはバイナリを人間が読み取り可能なシンボルに変換することです。

ほとんどの文字セットは 1 つのエンコード方式に対応します (たとえば、GBK は GBK エンコードに対応します)。ただし、UTF-8、UTF-16、UTF-32、UTF-7 など、多くの Unicode エンコードが存在します。

最も一般的に使用される Web ページは「UTF-8」です。UTF-8 は各文字をエンコードするのに 1 ~ 4 バイトを使用するため、既存の ASCII テキストを変換する必要はありません。 Base

1) HTML属性で10進数と16進数を使用します

10進数ではHTMLで「8」を使用でき、16進数では10進数よりxが1つ多い「Z」を使用できます。ベースコードには6もあります。 10~15を表すためにa~fの文字を追加します。

2) CSS属性で10進数と16進数が使用されます

CSSはHTMLの基本形式と互換性があります。また、16進数は「6c」の形式で表現することもできます。

3) JavaScript エンコードのカプセル化

は、eval を通じて文字列の 8 進数および 16 進数のエンコード メソッドを直接実行できます。8 進数は「56」で表され、16 進数は「x5c」で表されます。

コードで中国語の文字が使用されており、16 進数のエンコードが必要な場合は、16 進数の Unicode エンコードのみを実行でき、その表現は「u4ee3u7801」です。

「Web フロントエンド ハッキング技術の公開」では、主に次の 2 つの方法がエンコードとデコードにカプセル化されています。具体的なコードはここで確認できます。

コアコードは「str.charCodeAt(char).toString(base)」と「String.fromCharCode(parseInt(code,base))」です

charCodeAt()メソッドは0から65535までの整数を返します。指定されたインデックスの UTF-16 コード単位

static String.fromCharCode() メソッドは、指定された Unicode 値のシーケンスを使用して作成された文字列を返します。

オンライン Web ページを通じて「MonyerJS」をエンコードおよびデコードすることもできます。

4) HTML自動デコード機構

例えば、Webページ上で16進数の「Hello」を入力すると、自動的に「hello」にデコードされます。

この仕組みを備えた有名なスペース「 」もいくつかあります。

3. ブラウザのエンコード

JavaScript には、文字列をエンコードおよびデコードできる関数の 3 つのペアがあります。つまり、

escape/unescape、encodeURI/decodeURI、encodeURIComponent/decodeURIComponentです。

主な違いは、エンコードされない文字の数です。

1) エスケープがエンコードしない文字は 69 文字あります

*、+、-、.、/、@、_、0~9、a~z、A~Z およびエスケープは、それ以外の Unicode 値で動作します0~255 エンコード時は%u****形式で出力します。

2) encodeURI でエンコードされない文字は 82 文字あります

!、#、$、&、'、(,)、*、+、、、-、.、/、:、;、=、?、@ 、_、~、0~9、a~z、A~Z

3) encodeURIComponent がエンコードしない文字は 71 文字あります

!、'、(、)、*、-、.、_、~、0 ~9 、a~z、A~Z

JavaScript 文字セットのエンコードとデコードに関するその他の記事については、PHP 中国語 Web サイトに注目してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。