الفرق بين المراجعتين لصفحة: «Ruby/String/encode»
جميل-بيلوني (نقاش | مساهمات) إنشاء الصفحة. هذه الصفحة من مساهمات "كريم حبال". |
جميل-بيلوني (نقاش | مساهمات) إضافة المحتوى |
||
سطر 3: | سطر 3: | ||
[[تصنيف: Ruby Method]] | [[تصنيف: Ruby Method]] | ||
[[تصنيف: Ruby String]] | [[تصنيف: Ruby String]] | ||
يحول التابع <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;”، و “&lt;”، و “&gt;” على التوالي. أمَّا إن كانت القيمة هي <code>:attr</code>، فيقتبس التابع <code>encode</code> أيضًا نتيجة الاستبدال (باستعمال '“') ويُبدِّل “&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 بالمحارف غير المُعرَّفة مرجع المحرف الرقمي (بصيغة ست عشرية وبأحرف كبيرة). أي '&'، و '>'، و '<' تحول إلى “&”، و “<”، و “>” على التوالي. أمَّا إن كانت القيمة هي :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
: يغير ترميز السلسلة النصية التي استدعي معها إلى ترميز مُحدد ثم يعيدها.