Heim  >  Artikel  >  Web-Frontend  >  So konvertieren Sie eine Zeichenfolge in JavaScript in das UTF-8-Format

So konvertieren Sie eine Zeichenfolge in JavaScript in das UTF-8-Format

PHPz
PHPzOriginal
2023-04-05 14:37:105161Durchsuche

In der täglichen Entwicklung müssen wir Zeichenfolgen häufig in das UTF-8-Format konvertieren, da UTF-8 eine universelle Zeichenkodierungsmethode ist, die mehrsprachige Zeichen unterstützt, einschließlich Chinesisch, Japanisch, Koreanisch usw. JavaScript ist eine häufig verwendete Skriptsprache, die uns bei diesem Konvertierungsprozess helfen kann.

In diesem Artikel wird die Konvertierung von Zeichenfolgen in das UTF-8-Format in JavaScript unter folgenden Gesichtspunkten vorgestellt:

  1. Verstehen Sie die UTF-8-Kodierungsmethode
  2. Konvertieren Sie Zeichenfolgen schnell in UTF-8
  3. Vollständiges UTF-8-Transkodierungsschema
  4. UTF-8-Kodierungsmethode verstehen

UTF-8 ist eine Zeichenkodierung mit variabler Länge. Die Kodierungsregeln lauten wie folgt:

  • Bei Einzelbyte-Zeichen wird die erste Ziffer des Bytes auf 0 gesetzt, die nächste auf 7 Bits sind der Unicode-Code dieses Zeichens;
  • Bei Multibyte-Zeichen sind die ersten n Bits des ersten Bytes alle 1, das n+1. Bit ist 0 und die ersten 2 Bits der folgenden Bytes sind alle auf gesetzt 0,10, die restlichen 6 Bits sind der Unicode-Code des Zeichens.

Zum Beispiel lautet der Unicode-Code des chinesischen Schriftzeichens „you“ „U+4F60“. Gemäß den oben genannten Regeln sollte er nach der Konvertierung in die UTF-8-Kodierung „E4 BD A0“ lauten.

  1. Konvertieren Sie Zeichenfolgen schnell in UTF-8.

In JavaScript können wir Zeichenfolgen mithilfe von Kodierungs- und Dekodierungsfunktionen problemlos in das UTF-8-Format konvertieren.

Die erste ist die Codierungsfunktion. Wir können die Zeichenfolge mit der Funktion encodeURIComponent() in das URI-Codierungsformat konvertieren und dann die URI-Codierung jedes Zeichens in die endgültige Zeichenfolge im UTF-8-Format einfügen folgt:

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

Unter diesen wird die Funktion encodeURIComponent() verwendet, um die Zeichenfolge in eine URI-Codierung umzuwandeln, und die Funktion replace() wird verwendet, um die URI-Codierung jedes Zeichens in die endgültige Zeichenfolge im UTF-8-Format zu integrieren.

Die Dekodierungsfunktion verwendet die Funktion decodeURIComponent(), um die kodierte Zeichenfolge zu dekodieren. Der Beispielcode lautet wie folgt:

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. Komplette UTF-8-Transkodierungslösung

Obwohl die obige Funktion Zeichenfolgen in das UTF-8-Format konvertieren kann, Diese Methode ist jedoch nicht sehr praktisch, wenn wir Zeichenfolgen in der gesamten Webanwendung transkodieren müssen. Derzeit können wir Bibliotheken von Drittanbietern wie iconv-lite verwenden, um die Transkodierungsaufgabe der gesamten Anwendung abzuschließen. Der Beispielcode lautet wie folgt:

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

Im obigen Code verwenden wir iconv.encode(. )-Funktion, um die Zeichenfolge in einen UTF-8-codierten Puffer zu konvertieren, und verwenden Sie dann die Funktion iconv.decode(), um den Puffer in die entsprechende codierte Zeichenfolge zu konvertieren. Es ist zu beachten, dass Sie die iconv-lite-Bibliothek zuerst über npm installieren müssen. Die Installationsmethode lautet:

npm install iconv-lite

Zusammenfassung

In diesem Artikel wird erläutert, wie Zeichenfolgen in JavaScript in das UTF-8-Format konvertiert werden. Wir lernten die UTF-8-Codierungsmethode kennen, realisierten eine einfache Methode zum Konvertieren von Zeichenfolgen in UTF-8 durch Codierungs- und Decodierungsfunktionen und führten die Verwendung der iconv-lite-Bibliothek ein, um die Transcodierungsaufgabe der gesamten Anwendung abzuschließen. In der tatsächlichen Entwicklung kann die Auswahl einer geeigneten Methode basierend auf den tatsächlichen Anforderungen die Entwicklungskosten senken und die Arbeitseffizienz verbessern.

Das obige ist der detaillierte Inhalt vonSo konvertieren Sie eine Zeichenfolge in JavaScript in das UTF-8-Format. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Was ist eine Javascript-API?Nächster Artikel:Was ist eine Javascript-API?