روبي 1.8 و UTF-8 سلسلة بيان حالة مقارنة
-
20-08-2019 - |
سؤال
لقد أشعل النار المهمة (في lib/المهام الدليل) أن أركض مع كرون على استضافة مشتركة.المشكلة هي أنني أريد أن تقارن UTF-8 سلسلة باستخدام حالة المنصورة ولكن بلدي شفرة المصدر هو UTF-8 ترميز.إن حفظ التعليمات البرمجية المصدر كما UTF-8 هناك خطأ عندما أحاول تشغيله :(
ماذا علي أن أفعل ؟
قد تكون قراءة هذه السلاسل من الخارجية UTF-8 txt الملف ؟
P. S.أنا باستخدام روبي 1.8
P. S.أعني مقارنة هذه الطريقة:
result = case utf8string
when 'АБВ': 1
when 'ГДИ': 2
when 'ЙКЛ': 3
when 'МНО': 4
else 5
end
المحلول
وانا اقول كنت بحاجة إلى تغيير محرر النص الخاص بك كما هو BOM <م> لا م> اللازمة لUTF-8. UTF-8 ليس بايت النظام يعتمد. انظر ربط النص للحصول على مزيد من التفاصيل.
نصائح أخرى
لقد وجدت أن المشكلة ليست في حالة المنصورة
المشكلة انني عندما احفظ بلدي شفرة المصدر في UTF-8 تنسيق النص محرر إضافة 3 بايت (BOM) في بداية تشير إلى أن ترميز UTF-8.
Q:ما هو BOM ؟
A: ترتيب بايت علامة (BOM) يتكون من رمز الحرف U+FEFF في بداية دفق البيانات ، حيث يمكن أن تستخدم توقيع تحديد ترتيب بايت و ترميز شكل أساسا من علامات نص عادي الملفات.تحت أعلى مستوى البروتوكولات استخدام بوم قد يكون إلزامية (أو محظورة) في يونيكود دفق البيانات المبينة في هذا البروتوكول.
الخطأ أن أحصل كان:
1: Invalid char `\357' in expression
1: Invalid char `\273' in expression
1: Invalid char `\277' in expression
وحاول استخدام طريقة mb_chars
من ActiveSupport إطار القضبان ':
result = case utf8string.mb_chars
when 'АБВ': 1
when 'ГДИ': 2
when 'ЙКЛ': 3
when 'МНО': 4
else 5
end