Maison  >  Article  >  interface Web  >  Comment convertir une chaîne au format UTF-8 en JavaScript

Comment convertir une chaîne au format UTF-8 en JavaScript

PHPz
PHPzoriginal
2023-04-05 14:37:105116parcourir

Dans le développement quotidien, nous avons souvent besoin de convertir des chaînes au format UTF-8, car UTF-8 est une méthode de codage de caractères universelle qui prend en charge les caractères multilingues, notamment le chinois, le japonais, le coréen, etc. JavaScript est un langage de script couramment utilisé qui peut nous aider à réaliser ce processus de conversion.

Cet article présentera comment convertir des chaînes au format UTF-8 en JavaScript sous les aspects suivants :

  1. Comprendre la méthode d'encodage UTF-8
  2. Convertir rapidement des chaînes au format UTF-8
  3. Schéma complet de transcodage UTF-8
  4. Comprendre la méthode de codage UTF-8

UTF-8 est un codage de caractères de longueur variable. Ses règles de codage sont les suivantes :

  • Pour les caractères à un octet, le premier chiffre de l'octet est défini sur 0, le suivant 7. les bits sont le code Unicode de ce caractère ;
  • Pour les caractères multi-octets, les n premiers bits du premier octet sont tous 1, le n+1ème bit est 0 et les 2 premiers bits des octets suivants sont tous définis sur 0. 10, les 6 bits restants sont le code Unicode du caractère.

Par exemple, le code Unicode du caractère chinois « vous » est « U+4F60 ». Selon les règles ci-dessus, il devrait être « E4 BD A0 » après avoir été converti en encodage UTF-8.

  1. Convertissez rapidement des chaînes au format UTF-8

En JavaScript, nous pouvons facilement convertir des chaînes au format UTF-8 grâce à des fonctions d'encodage et de décodage.

La première est la fonction d'encodage. Nous pouvons utiliser la fonction encodeURIComponent() pour convertir la chaîne au format d'encodage URI, puis fusionner l'encodage URI de chaque caractère dans la chaîne finale au format UTF-8. suit :

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;
}

Parmi elles, la fonction encodeURIComponent() est utilisée pour convertir la chaîne en codage URI, et la fonction replace() est utilisée pour fusionner l'encodage URI de chaque caractère dans la chaîne finale au format UTF-8.

La fonction de décodage utilise la fonction decodeURIComponent() pour décoder la chaîne codée. L'exemple de code est le suivant :

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. Solution complète de transcodage UTF-8

Bien que la fonction ci-dessus puisse convertir les chaînes au format UTF-8, mais cette méthode n'est pas très pratique si l'on a besoin de transcoder des chaînes dans l'ensemble de l'application web. À l'heure actuelle, nous pouvons utiliser des bibliothèques tierces, telles que iconv-lite, pour effectuer la tâche de transcodage de l'ensemble de l'application. L'exemple de code est le suivant :

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 编码字符串

Dans le code ci-dessus, nous utilisons iconv.encode(. ) pour convertir la chaîne en tampon codé UTF-8, puis utilisez la fonction iconv.decode() pour convertir le tampon en chaîne codée correspondante. Il convient de noter que pour utiliser la bibliothèque iconv-lite, vous devez d'abord l'installer via npm. La méthode d'installation est la suivante :

npm install iconv-lite

Résumé

Cet article présente comment convertir des chaînes au format UTF-8 en JavaScript. Nous avons découvert la méthode de codage UTF-8, réalisé une méthode simple de conversion de chaînes en UTF-8 grâce à des fonctions de codage et de décodage, et introduit l'utilisation de la bibliothèque iconv-lite pour terminer la tâche de transcodage de l'ensemble de l'application. Dans le développement réel, choisir une méthode appropriée en fonction des besoins réels peut réduire les coûts de développement et améliorer l'efficacité du travail.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:qu'est-ce que l'API javascriptArticle suivant:qu'est-ce que l'API javascript