فك تشفير السلاسل
[مستقر: 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()
.