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

من موسوعة حسوب
< Ruby‏ | String

يوحد التابع unicode_normalize!‎ ترميز السلسلة النصية التي استدعيت معه باستخدام ترميزات يونيكود الموحدة (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!‎:

string= "a\u0300"
string.unicode_normalize!  #=> "\u00E0"
string                     #=> "\u00E0"

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

انظر أيضًا

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

مصادر