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

高洛峰
リリース: 2017-02-04 09:31:58
オリジナル
1532 人が閲覧しました

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 サイトに注目してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート