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

من موسوعة حسوب
< Ruby‏ | String
مراجعة 13:45، 15 ديسمبر 2018 بواسطة جميل-بيلوني (نقاش | مساهمات) (إضافة المحتوى)
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)

يعيد التابع unicode_normalize نسخة موحدة (normalized string، أي ذات ترميز موحد) للسلسلة النصية التي استدعيت معه، باستخدام ترميزات يونيكود الموحدة (Unicode normalizations) التالية: NFC، أو NFD، أو NFKC، أو NFKD. يطلق التابع استثناءً إذا كانت السلسلة النصية غير مُرمّزة بترميز اليونيكود.

يُقصَد بترميز اليونيكود (Unicode Encoding) أيًا من الترميزات التالية: UTF-8، أو UTF-16BE/LE، أو UTF-32BE/LE، أو GB18030، أو UCS_2BE، أو UCS_4BE.

تُحوَّل السلسلة النصية إلى الترميز UTF-8، إذا كانت مُرمّزة بترميز مغاير له، مما يجعل العملية أبطأ فيما إذا كانت السلاسل مُرمّزة بالترميز UTF-8.

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

unicode_normalize(form=:nfc)

المعاملات

form

يحدد نمط ترميزات يونيكود الموحدة في نسخة السلسلة النصية المعطاة، ويأخذ إحدى القيم التالية:

  • nfc: (القيمة الافتراضية)
  • nfd:
  • nfkc:
  • nfkd:

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

تُعاد نسخة ذات ترميز موحد عن السلسلة النصية المعطاة باستخدام النمط form. يطلق استثناء إذا كانت السلسلة النصية غير مُرمَزة بترميز اليونيكود.

أمثلة

مثال على استعمال التابع unicode_normalize:

"a\u0300".unicode_normalize        #=> "\u00E0"
"a\u0300".unicode_normalize(:nfc)  #=> "\u00E0"
"\u00E0".unicode_normalize(:nfd)   #=> "a\u0300"
"\xE0".force_encoding('ISO-8859-1').unicode_normalize(:nfd)
                                   #=> Encoding::CompatibilityError raised

انظر أيضًا

  • التابع force_encoding: يغير ترميز السلسلة النصية التي استدعي معها إلى ترميز مُحدد ثم يعيدها.
  • التابع unicode_normalize!‎: يوحد ترميز السلسلة النصية التي استدعيت معه باستخدام أحد ترميزات يونيكود الموحدة.
  • التابع unicode_normalized?‎: يتحقق إذا كانت السلسلة النصية التي استدعيت معه ذات ترميز موحَّد باستخدام أحد ترميزات يونيكود الموحدة (Unicode normalizations). 

مصادر