ホームページ >ウェブフロントエンド >フロントエンドQ&A >JavaScriptで文字列をUTF-8形式に変換する方法

JavaScriptで文字列をUTF-8形式に変換する方法

PHPz
PHPzオリジナル
2023-04-05 14:37:105166ブラウズ

UTF-8 は中国語、日本語、韓国語などの多言語文字をサポートする汎用文字エンコード方式であるため、日常の開発では文字列を UTF-8 形式に変換する必要がよくあります。 JavaScript は、この変換プロセスの実現に役立つ一般的に使用されるスクリプト言語です。

この記事では、JavaScript で文字列を UTF-8 形式に変換する方法を次の観点から紹介します。

  1. UTF-8 エンコード方式を理解する
  2. すぐに変換する文字列を UTF-8 に変換する
  3. 完全な UTF-8 トランスコーディング ソリューション
  4. UTF-8 エンコード方式を理解する

UTF-8 は変換です 長い文字エンコードとそのエンコード

  • シングルバイト文字の場合、バイトの最初のビットは 0 に設定され、次の 7 ビットは文字の Unicode コードです。
  • マルチバイト文字の場合、最初のバイトの最初の n ビットはすべて 1、n 番目の 1 ビットは 0、次のバイトの最初の 2 ビットはすべて 10 に設定され、残りの 6 ビットはその Unicode コードです。キャラクター。

たとえば、漢字「君」の Unicode コードは「U 4F60」ですが、上記のルールによれば、UTF-8 エンコードに変換すると「E4 BD A0」となります。 。

  1. 文字列を UTF-8 にすばやく変換する

JavaScript では、エンコード関数とデコード関数を使用して文字列を UTF-8 形式に簡単に変換できます。

最初はエンコード関数です。encodeURIComponent() 関数を使用して文字列を URI エンコード形式に変換し、各文字の URI エンコードを UTF-8 形式の最終文字列に結合します。サンプルコードは以下のとおりです。 :

function utf8Encode(str) {
  let encodedStr = encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, (match, p1) => {
    return String.fromCharCode(parseInt(p1, 16));
  });

  let utf8Str = "";
  for (let i = 0; i < encodedStr.length; i++) {
    let charCode = encodedStr.charCodeAt(i);
    if (charCode < 128) {
      utf8Str += String.fromCharCode(charCode);
    } else if (charCode < 2048) {
      utf8Str += String.fromCharCode((charCode >> 6) | 192);
      utf8Str += String.fromCharCode((charCode & 63) | 128);
    } else {
      utf8Str += String.fromCharCode((charCode >> 12) | 224);
      utf8Str += String.fromCharCode(((charCode >> 6) & 63) | 128);
      utf8Str += String.fromCharCode((charCode & 63) | 128);
    }
  }

  return utf8Str;
}

このうち、 encodeURIComponent() 関数は文字列を URI エンコーディングに変換するために使用され、 replace() 関数は各文字の URI エンコーディングを最終的な文字列に結合するために使用されます。 UTF-8 形式の文字列。

デコード関数は、decodeURIComponent() 関数を使用してエンコードされた文字列をデコードします。サンプル コードは次のとおりです:

function utf8Decode(utf8Str) {
  let decodedStr = "";
  let i = 0;

  while (i < utf8Str.length) {
    let charCode = utf8Str.charCodeAt(i);
    if (charCode < 128) {
      decodedStr += String.fromCharCode(charCode);
      i++;
    } else if (charCode >= 192 && charCode < 224) {
      decodedStr += String.fromCharCode(((charCode & 31) << 6) | (utf8Str.charCodeAt(i + 1) & 63));
      i += 2;
    } else {
      decodedStr += String.fromCharCode(((charCode & 15) << 12) | ((utf8Str.charCodeAt(i + 1) & 63) << 6) | (utf8Str.charCodeAt(i + 2) & 63));
      i += 3;
    }
  }

  return decodeURIComponent(decodedStr);
}
  1. 完全な UTF-8 トランスコーディング ソリューション
#上記の関数は文字列を UTF-8 形式に変換できますが、Web アプリケーション全体で文字列をトランスコードする必要がある場合、この方法はあまり実用的ではありません。現時点では、iconv-lite などのサードパーティ ライブラリを使用して、アプリケーション全体のトランスコーディング タスクを完了できます。サンプル コードは次のとおりです:

const iconv = require("iconv-lite");

let utf8Str = "欢迎使用 iconv-lite 库";

let buf = iconv.encode(utf8Str, "utf8"); // 转成 UTF-8 Buffer
let gbkStr = iconv.decode(buf, "gbk"); // 转成 GBK 编码字符串
上記のコードでは、 iconv.encode() 関数を使用して文字列を UTF-8 エンコードされたバッファに変換し、iconv.decode() 関数を使用してバッファを対応するエンコード文字列に変換します。なお、iconv-lite ライブラリを使用するには、まず npm 経由でインストールする必要があります。インストール方法は次のとおりです:

npm install iconv-lite
概要

この記事では、文字列を UTF に変換する方法を紹介します。 JavaScript の -8 形式。 UTF-8 エンコード方式について学習し、エンコード関数とデコード関数によって文字列を UTF-8 に変換する簡単な方法を実現し、アプリケーション全体のトランスコード タスクを完了するための iconv-lite ライブラリの使用を導入しました。実際の開発においては、実際のニーズに応じて適切な手法を選択することで、開発コストの削減や作業効率の向上を図ることができます。

以上がJavaScriptで文字列をUTF-8形式に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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