فك ترميز السلاسل النصية
[مستقر: 2 - مستقر]
مستقر: 2 الاستقرار: 2 - مستقر
كود المصدر: lib/string_decoder.js
توفر وحدة node:string_decoder
واجهة برمجة تطبيقات لفك ترميز كائنات Buffer
إلى سلاسل نصية بطريقة تحافظ على أحرف UTF-8 و UTF-16 المشفرة متعددة البايت. يمكن الوصول إليها باستخدام:
import { StringDecoder } from 'node:string_decoder';
const { StringDecoder } = require('node:string_decoder');
يوضح المثال التالي الاستخدام الأساسي للفئة StringDecoder
.
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)); // يطبع: €
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 لرمز اليورو الأوروبي (€
) عبر ثلاث عمليات منفصلة:
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]))); // يطبع: €
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
ينشئ نسخة جديدة من StringDecoder
.
stringDecoder.end([buffer])
تمت إضافته في: الإصدار v0.9.3
buffer
<string> | <Buffer> | <TypedArray> | <DataView> البايتات لفك ترميزها.- الإرجاع: <string>
يُرجع أي مدخل متبقي مخزن في المخزن المؤقت الداخلي كسلسلة نصية. سيتم استبدال البايتات التي تمثل أحرف UTF-8 وUTF-16 غير المكتملة بأحرف استبدال مناسبة لترميز الأحرف.
إذا تم توفير وسيط buffer
، فسيتم إجراء استدعاء نهائي لـ stringDecoder.write()
قبل إرجاع المدخل المتبقي. بعد استدعاء end()
، يمكن إعادة استخدام كائن stringDecoder
لمدخلات جديدة.
stringDecoder.write(buffer)
[سجل التغييرات]
الإصدار | التغييرات |
---|---|
v8.0.0 | يتم الآن استبدال كل حرف غير صالح بحرف استبدال واحد بدلاً من حرف واحد لكل بايت على حدة. |
v0.1.99 | تمت إضافته في: الإصدار v0.1.99 |
buffer
<string> | <Buffer> | <TypedArray> | <DataView> البايتات لفك ترميزها.- الإرجاع: <string>
يُرجع سلسلة نصية مفكوكة الترميز، مع التأكد من أن أي أحرف متعددة البايتات غير مكتملة في نهاية Buffer
أو TypedArray
أو DataView
يتم حذفها من السلسلة النصية التي تم إرجاعها وتخزينها في مخزن مؤقت داخلي للاستدعاء التالي لـ stringDecoder.write()
أو stringDecoder.end()
.