Skip to content

فك ترميز السلاسل النصية

[مستقر: 2 - مستقر]

مستقر: 2 الاستقرار: 2 - مستقر

كود المصدر: lib/string_decoder.js

توفر وحدة node:string_decoder واجهة برمجة تطبيقات لفك ترميز كائنات Buffer إلى سلاسل نصية بطريقة تحافظ على أحرف UTF-8 و UTF-16 المشفرة متعددة البايت. يمكن الوصول إليها باستخدام:

js
import { StringDecoder } from 'node:string_decoder';
js
const { StringDecoder } = require('node:string_decoder');

يوضح المثال التالي الاستخدام الأساسي للفئة StringDecoder.

js
import { StringDecoder } from 'node:string_decoder';
import { Buffer } from 'node:buffer';
const decoder = new StringDecoder('utf8');

const cent = Buffer.from([0xC2, 0xA2]);
console.log(decoder.write(cent)); // يطبع: ¢

const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); // يطبع: €
js
const { StringDecoder } = require('node:string_decoder');
const decoder = new StringDecoder('utf8');

const cent = Buffer.from([0xC2, 0xA2]);
console.log(decoder.write(cent)); // يطبع: ¢

const euro = Buffer.from([0xE2, 0x82, 0xAC]);
console.log(decoder.write(euro)); // يطبع: €

عندما تتم كتابة مثيل Buffer إلى مثيل StringDecoder, يتم استخدام مخزن مؤقت داخلي لضمان أن السلسلة النصية التي تم فك ترميزها لا تحتوي على أي أحرف متعددة البايت غير مكتملة. يتم الاحتفاظ بها في المخزن المؤقت حتى الاستدعاء التالي لـ stringDecoder.write() أو حتى يتم استدعاء stringDecoder.end().

في المثال التالي، تتم كتابة البايتات الثلاثة المشفرة بـ UTF-8 لرمز اليورو الأوروبي () عبر ثلاث عمليات منفصلة:

js
import { StringDecoder } from 'node:string_decoder';
import { Buffer } from 'node:buffer';
const decoder = new StringDecoder('utf8');

decoder.write(Buffer.from([0xE2]));
decoder.write(Buffer.from([0x82]));
console.log(decoder.end(Buffer.from([0xAC]))); // يطبع: €
js
const { StringDecoder } = require('node:string_decoder');
const decoder = new StringDecoder('utf8');

decoder.write(Buffer.from([0xE2]));
decoder.write(Buffer.from([0x82]));
console.log(decoder.end(Buffer.from([0xAC]))); // يطبع: €

الصنف: StringDecoder

new StringDecoder([encoding])

تمت إضافته في: الإصدار v0.1.99

  • encoding <string> ترميز الأحرف encoding الذي سيستخدمه StringDecoder. افتراضي: 'utf8'.

ينشئ نسخة جديدة من StringDecoder.

stringDecoder.end([buffer])

تمت إضافته في: الإصدار v0.9.3

يُرجع أي مدخل متبقي مخزن في المخزن المؤقت الداخلي كسلسلة نصية. سيتم استبدال البايتات التي تمثل أحرف UTF-8 وUTF-16 غير المكتملة بأحرف استبدال مناسبة لترميز الأحرف.

إذا تم توفير وسيط buffer، فسيتم إجراء استدعاء نهائي لـ stringDecoder.write() قبل إرجاع المدخل المتبقي. بعد استدعاء end()، يمكن إعادة استخدام كائن stringDecoder لمدخلات جديدة.

stringDecoder.write(buffer)

[سجل التغييرات]

الإصدارالتغييرات
v8.0.0يتم الآن استبدال كل حرف غير صالح بحرف استبدال واحد بدلاً من حرف واحد لكل بايت على حدة.
v0.1.99تمت إضافته في: الإصدار v0.1.99

يُرجع سلسلة نصية مفكوكة الترميز، مع التأكد من أن أي أحرف متعددة البايتات غير مكتملة في نهاية Buffer أو TypedArray أو DataView يتم حذفها من السلسلة النصية التي تم إرجاعها وتخزينها في مخزن مؤقت داخلي للاستدعاء التالي لـ stringDecoder.write() أو stringDecoder.end().