الفرق بين المراجعتين ل"Ruby/String/encode"

من موسوعة حسوب
< Ruby‏ | String
اذهب إلى التنقل اذهب إلى البحث
(إنشاء الصفحة. هذه الصفحة من مساهمات "كريم حبال".)
 
(إضافة المحتوى)
 
سطر 3: سطر 3:
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby Method]]
 
[[تصنيف: Ruby String]]
 
[[تصنيف: Ruby String]]
يعيد التابع <code>encode</code> ب
+
يحول التابع <code>encode</code> سلسلة نصية مرمزة بترميز محدَّد إلى ترميز آخر ثم يعيد نسخة عنها.
 
==البنية العامة==
 
==البنية العامة==
 
<syntaxhighlight lang="ruby">encode(encoding [, options] ) → str
 
<syntaxhighlight lang="ruby">encode(encoding [, options] ) → str
 
encode(dst_encoding, src_encoding [, options] ) → str
 
encode(dst_encoding, src_encoding [, options] ) → str
encode([options]) → str</syntaxhighlight>
+
encode([options]) → str</syntaxhighlight>يعيد الشكل الأول من التابع نسخة عن السلسلة النصية التي استدعيت معه بعد تحويل ترميزها إلى الترميز <code>encoding</code> المعطى. أمَّا الشكل الثاني، فيعيد نسخة عن السلسلة النصية التي استدعيت معه بعد تحويل ترميزها من الترميز <code>dst_encoding</code> إلى الترميز <code>src_encoding</code>. أمَّا الشكل الأخير، فيعيد نسخة من السلسلة النصية التي استدعيت معه بعد تحويل ترميزها إلى الترميز <code>[[Ruby/Encoding/default internal|Encoding.default_internal]]</code>.
 +
 
 +
افتراضيًّا، يرمي الشكل الأول والثاني الاستثناء <code>[[Ruby/Encoding::UndefinedConversionError|Encoding::UndefinedConversionError]]</code> عند مصادفة محرف غير مُعرَّف في الترميز الوجهة المراد تحويل السلسلة النصية إليه، والاستثناء <code>[[Ruby/Encoding::InvalidByteSequenceError|Encoding::InvalidByteSequenceError]]</code> عند مصادفة سلسلة بايتات غير صالحة في الترميز المصدر. أمَّا الشكل الأخير، فلا يرمي استثناءات بشكل افتراضي ولكن يعتمد على مبدأ تبديل السلاسل النصية.
 +
 
 +
== المعاملات ==
 +
 
 +
=== <code>encoding</code> ===
 +
الترميز المراد تحويل السلسلة النصية المعطاة إليه.
 +
 
 +
=== <code>dst_encoding</code> ===
 +
الترميز الوجهة المراد تحويل السلسلة النصية المعطاة إليه.
 +
 
 +
=== <code>srd_encoding</code> ===
 +
الترميز الهدف المراد تحويل السلسلة النصية المعطاة منه. أي يمثِّل الترميز الحالي للسلسلة النصية المعطاة.
 +
 
 +
=== <code>options</code> ===
 +
جدول <code>[[Ruby/Hash|Hash]]</code> يعطي تفاصيل عملية التحويل ويمكن أن يأخذ أحد المفاتيح التالية:
 +
{| class="wikitable"
 +
!المفتاح
 +
!الوصف
 +
|-
 +
|<code>‎:invalid</code>
 +
|إن كانت القيمة هي <code>‎:replace</code>، يُبدِّل التابع <code>encode</code> محرف الاستبدال (replacement character) مكان سلسلة البيانات غير الصالحة الموجودة في السلسلة النصية المعطاة. السلوك الافتراضي هو رفع الاستثناء <code>[[Ruby/Encoding::InvalidByteSequenceError|Encoding::InvalidByteSequenceError]]</code>.
 +
|-
 +
|<code>‎:undef</code>
 +
|إن كانت القيمة هي <code>‎:replace</code>، يُبدِّل التابع <code>encode</code> محرف الاستبدال مكان المحارف غير المعرفة في الترميز الوجهة. السلوك الافتراضي هو رفع الاستثناء <code>[[Ruby/Encoding::UndefinedConversionError|Encoding::UndefinedConversionError]]</code>.
 +
|-
 +
|<code>‎:replace</code>
 +
|يضبط سلسلة الاستبدال إلى القيمة المعطاة مع هذا المفتاح. سلسلة الاستبدال الافتراضية هي "uFFFD" للترميز Unicode، والسلسلة "?" لما تبقى.
 +
|-
 +
|<code>‎:fallback</code>
 +
|يضبط سلسلة الاستبدال عبر الكائن المعطى من أجل المحارف غير المعرفة. يجب أن يكون هذا الكائن من النوع <code>[[Ruby/Hash|Hash]]</code>، أو <code>[[Ruby/Proc|Proc]]</code>، أو <code>[[Ruby/Method|Method]]</code>، أو أي كائن يملك المعامل <code>[]</code>. يجب أن يكون المفتاح الخاص به هو المحرف ذو الترميز غير المُعرَّف في الترميز المصدر لعملية التحويل الحالية، ويجب أن تكون القيمة المقابلة هي أي ترميز قابل للتحويل إلى الترميز الوجهة لعملية التحويل.
 +
|-
 +
|<code>‎:xml</code>
 +
|يجب أن تكون القيمة إمَّا ‎<code>:text</code> أو ‎<code>:attr</code>. إن كانت القيمة هي ‎<code>:text</code>، فسيستبدل التابع <code>encode</code> بالمحارف غير المُعرَّفة مرجع المحرف الرقمي (بصيغة ست عشرية وبأحرف كبيرة). أي '&'، و '>'، و '<' تحول إلى “‎&amp;amp;‎”، و “‎&amp;lt;‎”، و “‎&amp;gt;‎” على التوالي. أمَّا إن كانت القيمة هي ‎<code>:attr</code>، فيقتبس التابع <code>encode</code> أيضًا نتيجة الاستبدال (باستعمال '“') ويُبدِّل “‎&amp;quot;‎” مكان '”'.
 +
|-
 +
|<code>‎:cr_newline</code>
 +
|يُبدِّل التابع CR (أي “r”) مكان LF (أي “n”) إن كانت قيمة هذا المفتاح هي <code>true</code>.
 +
|-
 +
|<code>‎:crlf_newline</code>
 +
|يُبدِّل التابع CRLF (أي “rn”) مكان LF (أي “n”) إن كانت قيمة هذا المفتاح هي <code>true</code>.
 +
|-
 +
|<code>‎:universal_newline</code>
 +
|يُبدِّل التابع LF (أي “n”) مكان CRLF (أي “rn”) و CR (أي “r”) إن كانت قيمة هذا المفتاح هي <code>true</code>.
 +
|}
  
 
==القيمة المعادة==
 
==القيمة المعادة==
يعاد
+
تعاد نسخة عن السلسلة النصية المعطاة بعد تحويلها من ترميزٍ إلى ترميزٍ آخر محدَّد.
 +
 
 +
==انظر أيضًا==
 +
* التابع <code>[[Ruby/String/ascii only-3F|ascii_only?‎]]</code>: يتحقق إذا كانت السلسلة النصية مؤلفة من محارف مرمزة بالترميز <nowiki/>[[Arduino/asciichart|ASCII]] فقط.
  
==انظر أيضا==
+
* التابع [[Ruby/String/encode-21|<code>encode!‎</code>]]: يحول سلسلة نصية مرمزة بترميز محدَّد إلى ترميز آخر ثم يعيدها.
 +
* التابع <code>[[Ruby/String/encoding|encoding]]</code>: يُعيد ترميز السلسلة النصية التي استُدعيت معه.
 +
* التابع <code>[[Ruby/String/force encoding|force_encoding]]</code>: يغير ترميز السلسلة النصية التي استدعي معها إلى ترميز مُحدد ثم يعيدها.
  
 
==مصادر==
 
==مصادر==
 
*[http://ruby-doc.org/core-2.5.1/String.html#method-i-encode قسم التابع ‎encode في الصنف String في توثيق روبي الرسمي.]
 
*[http://ruby-doc.org/core-2.5.1/String.html#method-i-encode قسم التابع ‎encode في الصنف String في توثيق روبي الرسمي.]

المراجعة الحالية بتاريخ 08:27، 26 مارس 2019

يحول التابع 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: يغير ترميز السلسلة النصية التي استدعي معها إلى ترميز مُحدد ثم يعيدها.

مصادر