التابع String.encode في روبي

من موسوعة حسوب
< Ruby‏ | String

يحول التابع 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 بالمحارف غير المُعرَّفة مرجع المحرف الرقمي (بصيغة ست عشرية وبأحرف كبيرة). أي '&'، و '>'، و '<' تحول إلى “‎&amp;‎”، و “‎&lt;‎”، و “‎&gt;‎” على التوالي. أمَّا إن كانت القيمة هي ‎:attr، فيقتبس التابع encode أيضًا نتيجة الاستبدال (باستعمال '“') ويُبدِّل “‎&quot;‎” مكان '”'.
‎: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: يغير ترميز السلسلة النصية التي استدعي معها إلى ترميز مُحدد ثم يعيدها.

مصادر