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> ترميز الأحرف الترميز الذي سيستخدمه 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().