الفرق بين المراجعتين لصفحة: «Ruby/Encoding/Converter/convert»

من موسوعة حسوب
< Ruby‏ | Encoding‏ | Converter
أنشأ الصفحة ب'{{DISPLAYTITLE:التابع <code>Encoding::Converter.convert</code> في روبي}} يُحوِّل التابع <code>convert</code> ترميز سّلسلة نصيّة...'
 
لا ملخص تعديل
 
(مراجعة متوسطة واحدة بواسطة مستخدم واحد آخر غير معروضة)
سطر 2: سطر 2:
يُحوِّل التابع <code>convert</code> ترميز سّلسلة نصيّة معينة. يجب استخدام التابع <code>[[Ruby/Encoding/Converter/finish|finish]]</code> في النّهاية.
يُحوِّل التابع <code>convert</code> ترميز سّلسلة نصيّة معينة. يجب استخدام التابع <code>[[Ruby/Encoding/Converter/finish|finish]]</code> في النّهاية.


إذا حدث خطأٌ في التحويل، فسيُرمَى أحد الخطأين <code>Encoding::UndefinedConversionError</code> أو <code>Encoding::InvalidByteSequenceError</code>. لا يزوِّد التّابع <code>convert</code> أي طرائق لاسترداد أو إعادة العملية بدءًا من الاستثناء المرمي. استخدم التابع <code>[[Ruby/Encoding/Converter/primitive convert|primitive_convert]]</code> عندما تريد التّعامل مع هذه الاستثناءات.
إذا حدث خطأٌ في التحويل، فسيُرمَى أحد الخطأين <code>[[Ruby/Encoding/UndefinedConversionError|Encoding::UndefinedConversionError]]</code> أو <code>[[Ruby/Encoding/InvalidByteSequenceError|Encoding::InvalidByteSequenceError]]</code>. لا يزوِّد التّابع <code>convert</code> أي طرائق لاسترداد أو إعادة العملية بدءًا من الاستثناء المرمي. استخدم التابع <code>[[Ruby/Encoding/Converter/primitive convert|primitive_convert]]</code> عندما تريد التّعامل مع هذه الاستثناءات.


== البنية العامة ==
== البنية العامة ==
سطر 12: سطر 12:


=== <code>source_string</code> ===
=== <code>source_string</code> ===
السلسلة النّصية ذات التّرميز المصدر المراد تحويله. يعدُّ المعامل <code>source_string</code> جزءًا من المصدر. تُعين <code>partial_input:</code> مثلًا إلى القيمة <code>true</code> داخليًا (partial_input=>true:).
السلسلة النّصية ذات التّرميز المصدر المراد تحويله. يعدُّ المعامل <code>source_string</code> جزءًا من المصدر. تُعين <code>partial_input:</code> مثلًا إلى القيمة <code>true</code> داخليًا (<code>partial_input=>true:</code>).


== القيم المعادة ==
== القيم المعادة ==
سطر 20: سطر 20:
مثالٌ عن استخدام التابع <code>convert</code>:<syntaxhighlight lang="ruby">
مثالٌ عن استخدام التابع <code>convert</code>:<syntaxhighlight lang="ruby">
ec = Encoding::Converter.new("utf-8", "euc-jp")
ec = Encoding::Converter.new("utf-8", "euc-jp")
 
puts ec.convert("\u3042").dump     #=> "\xA4\xA2"
puts ec.convert("\u3042").dump     #=> "\xA4\xA2"
puts ec.finish.dump               #=> ""
 
puts ec.finish.dump                #=> ""


ec = Encoding::Converter.new("euc-jp", "utf-8")
ec = Encoding::Converter.new("euc-jp", "utf-8")
 
puts ec.convert("\xA4").dump       #=> ""
puts ec.convert("\xA4").dump       #=> ""
puts ec.convert("\xA2").dump       #=> "\xE3\x81\x82"
 
puts ec.finish.dump               #=> ""
puts ec.convert("\xA2").dump       #=> "\xE3\x81\x82"
 
puts ec.finish.dump                #=> ""


ec = Encoding::Converter.new("utf-8", "iso-2022-jp")
ec = Encoding::Converter.new("utf-8", "iso-2022-jp")
 
puts ec.convert("\xE3").dump       #=> "".force_encoding("ISO-2022-JP")
puts ec.convert("\xE3").dump       #=> "".force_encoding("ISO-2022-JP")
puts ec.convert("\x81").dump       #=> "".force_encoding("ISO-2022-JP")
 
puts ec.convert("\x82").dump       #=> "\e$B$\"".force_encoding("ISO-2022-JP")
puts ec.convert("\x81").dump       #=> "".force_encoding("ISO-2022-JP")
puts ec.finish.dump               #=> "\e(B".force_encoding("ISO-2022-JP")
 
puts ec.convert("\x82").dump       #=> "\e$B$\"".force_encoding("ISO-2022-JP")
 
puts ec.finish.dump                #=> "\e(B".force_encoding("ISO-2022-JP")
 


</syntaxhighlight>
</syntaxhighlight>
سطر 49: سطر 39:
* التّابع <code>[[Ruby/Encoding/Converter/replacement|replacement::]]</code>: يُعيد سلسلة الاستبدال النصية.
* التّابع <code>[[Ruby/Encoding/Converter/replacement|replacement::]]</code>: يُعيد سلسلة الاستبدال النصية.
* التّابع <code>[[Ruby/Encoding/Converter/replacement-3D|replacement]]</code>: يضبط سلسلة الاستبدال النصية.
* التّابع <code>[[Ruby/Encoding/Converter/replacement-3D|replacement]]</code>: يضبط سلسلة الاستبدال النصية.
* التّابع <code>[[wiki.hsoub.com/Ruby/Encoding/Converter/insert output|inspect]]</code>: يُعيد نسخةً قابلةً للطباعة من كائن الصنف <code>Encoding::Converter</code>.
* التّابع <code>[[Ruby/Encoding/Converter/inspect|inspect]]</code>: يُعيد نسخةً قابلةً للطباعة من كائن الصنف <code>[[Ruby/Encoding/Converter|Encoding::Converter]]</code>.
* التّابع <code>[[Ruby/Encoding/Converter/primitive errinfo|primitive_errinfo]]</code>: يُعيد معلوماتٍ مهمّةً حول آخر خطأٍ حدث في مصفوفة مكونة من خمسة عناصر.
* التّابع <code>[[Ruby/Encoding/Converter/primitive errinfo|primitive_errinfo]]</code>: يُعيد معلوماتٍ مهمّةً حول آخر خطأٍ حدث في مصفوفة مكونة من خمسة عناصر.
* التّابع <code>[[Ruby/Encoding/Converter/putback|putback]]</code>: يُعيد البايتات التي ستُحوَّل.
* التّابع <code>[[Ruby/Encoding/Converter/putback|putback]]</code>: يُعيد البايتات التي ستُحوَّل.
سطر 57: سطر 47:
[[تصنيف:Ruby]]
[[تصنيف:Ruby]]
[[تصنيف:Ruby Method]]
[[تصنيف:Ruby Method]]
[[تصنيف:Ruby Encoding]]
[[تصنيف:Ruby Encoding::Converter]]
[[تصنيف:Ruby Encoding::Converter]]

المراجعة الحالية بتاريخ 10:39، 18 أكتوبر 2018

يُحوِّل التابع convert ترميز سّلسلة نصيّة معينة. يجب استخدام التابع finish في النّهاية.

إذا حدث خطأٌ في التحويل، فسيُرمَى أحد الخطأين Encoding::UndefinedConversionError أو Encoding::InvalidByteSequenceError. لا يزوِّد التّابع convert أي طرائق لاسترداد أو إعادة العملية بدءًا من الاستثناء المرمي. استخدم التابع primitive_convert عندما تريد التّعامل مع هذه الاستثناءات.

البنية العامة

convert(source_string)  destination_string

المعاملات

source_string

السلسلة النّصية ذات التّرميز المصدر المراد تحويله. يعدُّ المعامل source_string جزءًا من المصدر. تُعين partial_input: مثلًا إلى القيمة true داخليًا (partial_input=>true:).

القيم المعادة

تُعاد السلسلة النصيّة source_string بعد تحويلها إلى التّرميز الوجهة الجديد.

أمثلة

مثالٌ عن استخدام التابع convert:

ec = Encoding::Converter.new("utf-8", "euc-jp")
puts ec.convert("\u3042").dump     #=> "\xA4\xA2"
puts ec.finish.dump                #=> ""

ec = Encoding::Converter.new("euc-jp", "utf-8")
puts ec.convert("\xA4").dump       #=> ""
puts ec.convert("\xA2").dump       #=> "\xE3\x81\x82"
puts ec.finish.dump                #=> ""

ec = Encoding::Converter.new("utf-8", "iso-2022-jp")
puts ec.convert("\xE3").dump       #=> "".force_encoding("ISO-2022-JP")
puts ec.convert("\x81").dump       #=> "".force_encoding("ISO-2022-JP")
puts ec.convert("\x82").dump       #=> "\e$B$\"".force_encoding("ISO-2022-JP")
puts ec.finish.dump                #=> "\e(B".force_encoding("ISO-2022-JP")

انظر أيضًا

  • التّابع replacement::: يُعيد سلسلة الاستبدال النصية.
  • التّابع replacement: يضبط سلسلة الاستبدال النصية.
  • التّابع inspect: يُعيد نسخةً قابلةً للطباعة من كائن الصنف Encoding::Converter.
  • التّابع primitive_errinfo: يُعيد معلوماتٍ مهمّةً حول آخر خطأٍ حدث في مصفوفة مكونة من خمسة عناصر.
  • التّابع putback: يُعيد البايتات التي ستُحوَّل.

مصادر