التابع String.encode
في روبي
يحول التابع encode
سلسلة نصية مرمزة بترميز محدَّد إلى ترميز آخر ثم يعيد نسخة عنها.
البنية العامة
encode(encoding [, options] ) → str
encode(dst_encoding, src_encoding [, options] ) → str
encode([options]) → str
يعيد الشكل الأول من التابع نسخة عن السلسلة النصية التي استدعيت معه بعد تحويل ترميزها إلى الترميز encoding
المعطى. أمَّا الشكل الثاني، فيعيد نسخة عن السلسلة النصية التي استدعيت معه بعد تحويل ترميزها من الترميز dst_encoding
إلى الترميز src_encoding
. أمَّا الشكل الأخير، فيعيد نسخة من السلسلة النصية التي استدعيت معه بعد تحويل ترميزها إلى الترميز Encoding.default_internal
.
افتراضيًّا، يرمي الشكل الأول والثاني الاستثناء Encoding::UndefinedConversionError
عند مصادفة محرف غير مُعرَّف في الترميز الوجهة المراد تحويل السلسلة النصية إليه، والاستثناء Encoding::InvalidByteSequenceError
عند مصادفة سلسلة بايتات غير صالحة في الترميز المصدر. أمَّا الشكل الأخير، فلا يرمي استثناءات بشكل افتراضي ولكن يعتمد على مبدأ تبديل السلاسل النصية.
المعاملات
encoding
الترميز المراد تحويل السلسلة النصية المعطاة إليه.
dst_encoding
الترميز الوجهة المراد تحويل السلسلة النصية المعطاة إليه.
srd_encoding
الترميز الهدف المراد تحويل السلسلة النصية المعطاة منه. أي يمثِّل الترميز الحالي للسلسلة النصية المعطاة.
options
جدول Hash
يعطي تفاصيل عملية التحويل ويمكن أن يأخذ أحد المفاتيح التالية:
المفتاح | الوصف |
---|---|
:invalid
|
إن كانت القيمة هي :replace ، يُبدِّل التابع encode محرف الاستبدال (replacement character) مكان سلسلة البيانات غير الصالحة الموجودة في السلسلة النصية المعطاة. السلوك الافتراضي هو رفع الاستثناء Encoding::InvalidByteSequenceError .
|
:undef
|
إن كانت القيمة هي :replace ، يُبدِّل التابع encode محرف الاستبدال مكان المحارف غير المعرفة في الترميز الوجهة. السلوك الافتراضي هو رفع الاستثناء Encoding::UndefinedConversionError .
|
:replace
|
يضبط سلسلة الاستبدال إلى القيمة المعطاة مع هذا المفتاح. سلسلة الاستبدال الافتراضية هي "uFFFD" للترميز Unicode، والسلسلة "?" لما تبقى. |
:fallback
|
يضبط سلسلة الاستبدال عبر الكائن المعطى من أجل المحارف غير المعرفة. يجب أن يكون هذا الكائن من النوع Hash ، أو Proc ، أو Method ، أو أي كائن يملك المعامل [] . يجب أن يكون المفتاح الخاص به هو المحرف ذو الترميز غير المُعرَّف في الترميز المصدر لعملية التحويل الحالية، ويجب أن تكون القيمة المقابلة هي أي ترميز قابل للتحويل إلى الترميز الوجهة لعملية التحويل.
|
:xml
|
يجب أن تكون القيمة إمَّا :text أو :attr . إن كانت القيمة هي :text ، فسيستبدل التابع encode بالمحارف غير المُعرَّفة مرجع المحرف الرقمي (بصيغة ست عشرية وبأحرف كبيرة). أي '&'، و '>'، و '<' تحول إلى “&”، و “<”، و “>” على التوالي. أمَّا إن كانت القيمة هي :attr ، فيقتبس التابع encode أيضًا نتيجة الاستبدال (باستعمال '“') ويُبدِّل “"” مكان '”'.
|
:cr_newline
|
يُبدِّل التابع CR (أي “r”) مكان LF (أي “n”) إن كانت قيمة هذا المفتاح هي true .
|
:crlf_newline
|
يُبدِّل التابع CRLF (أي “rn”) مكان LF (أي “n”) إن كانت قيمة هذا المفتاح هي true .
|
:universal_newline
|
يُبدِّل التابع LF (أي “n”) مكان CRLF (أي “rn”) و CR (أي “r”) إن كانت قيمة هذا المفتاح هي true .
|
القيمة المعادة
تعاد نسخة عن السلسلة النصية المعطاة بعد تحويلها من ترميزٍ إلى ترميزٍ آخر محدَّد.
انظر أيضًا
- التابع
ascii_only?
: يتحقق إذا كانت السلسلة النصية مؤلفة من محارف مرمزة بالترميز ASCII فقط.
- التابع
encode!
: يحول سلسلة نصية مرمزة بترميز محدَّد إلى ترميز آخر ثم يعيدها. - التابع
encoding
: يُعيد ترميز السلسلة النصية التي استُدعيت معه. - التابع
force_encoding
: يغير ترميز السلسلة النصية التي استدعي معها إلى ترميز مُحدد ثم يعيدها.