التابع Encoding::Converter.new في روبي
يُنشئ التّابع new:: كائنًا جديدًا من الصنف Encoding::Converter. التّرميز المصدر والتّرميز الوجهة يجب أن يكونا إما سلسلةً نصّيةً أو كائنًا من الصّنف Encoding.
يقبل التّابع new:: اختياريًّا أن يمرر إليه خيارٌ من النوع hash أو integer. عندما يكون من النوع hash، فمن الممكن أن يحتوي على :invalid => nil وغيرها. وعندما يكون من النوع integer، فإنه يجب أن يكون منطقيًّا (logical)، أو أحد الثوابت المعرَّفة مثل Encoding::Converter::INVALID_REPLACE وغيرها.
تكون بنية الخيار الممرر إلى التابع عندما يكون من النوع hash بالشكل:
invalid => nil: يرمي خطأً عند سلسلة بايتٍ غير صالحةٍ (القيمة الافتراضية).invalid => :replace: يستبدل سلسلة البايت غير الصّالحة.undef => nil: يرمي استثناءً عند تحويلٍ غير معرّف (القيمة الافتراضية).undef => :replace: يستبدل التحويلات غير المعرّفة.replace => string: يستبدل سلسلة ("?" أو "\uFFFD" إذا لم يُحَّدد أي شيء).newline => :universal: ينشئ مُزخرِفًا لتحويلCRLFوCRإلىLF.newline => :crlf: ينشئ مُزخرِفًا لتحويلLFإلىCRLF.newline => :cr: ينشئ مُزخرِفًا لتحويلLFإلىCR.universal_newline => true: ينشئ مُزخرِفًا لتحويلCRLFوCRإلىLF.crlf_newline => true: بنشئ مُزخرِفًا لتحويلLFإلىCRLF.cr_newline => true: ينشئ مُزخرِفًا لتحويلLFإلىCR.xml => :text: هروب على شكلCharData. يمكن أن تستخدم هذه الصيغة على أنها (HTML 4.0 #PCDATA).'&' -> '&''<' -> '<''>' -> '>'- المحارف غير المعرفة في التابع
CharRef <- destination_encodingست عشرية مثل &#xHH.
xml => :attr: هروب على شكلAttValue. توضع النتيجة بعد التحويل بين علامتي اقتباس بالشكل "…". يمكن أن تستخدم هذه الصيغة على أنها قيمة خاصيّةHTML.'&' -> '&''<' -> '<''>' -> '>''“' -> '"'- المحارف غير المعرفة في التابع
CharRef <- destination_encodingالست عشري مثل&#xHH.
وتكون بنية الخيار الممرر إلى التابع عندما يكون من النوع integer بالشكل:
-
Encoding::Converter::INVALID_REPLACE Encoding::Converter::UNDEF_REPLACEEncoding::Converter::UNDEF_HEX_CHARREFEncoding::Converter::UNIVERSAL_NEWLINE_DECORATOREncoding::Converter::CRLF_NEWLINE_DECORATOREncoding::Converter::CR_NEWLINE_DECORATOREncoding::Converter::XML_TEXT_DECORATOREncoding::Converter::XML_ATTR_CONTENT_DECORATOREncoding::Converter::XML_ATTR_QUOTE_DECORATOR
البنية العامة
Encoding::Converter.new(source_encoding, destination_encoding)
Encoding::Converter.new(source_encoding, destination_encoding, opt)
Encoding::Converter.new(convpath)
المعاملات
source_encoding
سلسلةً نصّيةً (string) أو كائنًا يمثَّل التّرميز المصدر الذي يراد إنشاء كائن منه.
destination_encoding
سلسلةٌ نصّيةٌ (string) أو كائنٌ يمثَّل التّرميز الوجهة الجديد.
opt
يجب أن يكون هذا المعامل قيمةً عدميّةً (nil)، أو خريطةً (hash)، أو عددًا صحيحًا (integer).
convpath
يجب أن يكون هذا المعامل مصفوفة (array)، ويمكن أن تحتوي على:
- عنصرين يمثلان كائن التّرميز أو اسمه، أو
- سلاسل نصّية تمثّل أسماء المزخرِفات (decorator names).
أمثلة
مثالٌ عن استخدام التابع new:
# UTF-16BE to UTF-8
ec = Encoding::Converter.new("UTF-16BE", "UTF-8")
# Usually, decorators such as newline conversion are inserted last.
ec = Encoding::Converter.new("UTF-16BE", "UTF-8", :universal_newline => true)
p ec.convpath #=> [[#<Encoding:UTF-16BE>, #<Encoding:UTF-8>],
# "universal_newline"]
# But, if the last encoding is ASCII incompatible,
# decorators are inserted before the last conversion.
ec = Encoding::Converter.new("UTF-8", "UTF-16BE", :crlf_newline => true)
p ec.convpath #=> ["crlf_newline",
# [#<Encoding:UTF-8>, #<Encoding:UTF-16BE>]]
# Conversion path can be specified directly.
ec = Encoding::Converter.new(["universal_newline", ["EUC-JP", "UTF-8"], ["UTF-8", "UTF-16BE"]])
p ec.convpath #=> ["universal_newline",
# [#<Encoding:EUC-JP>, #<Encoding:UTF-8>],
# [#<Encoding:UTF-8>, #<Encoding:UTF-16BE>]]
انظر أيضًا
- التّابع
last_error: يُعيد الكائنexceptionعند حصول خطأٍ في آخر عملية تحويل أو يعيد القيمةnilإن لم يحصل أي خطأ. - التّابع
destination_encoding: يُعيد التّرميز الوجهة على شكل كائنٍ من الصنفEncoding. - التّابع
source_encoding: يُعيد الترميز المصدر على شكل كائن من الصنفEncoding.