سؤال

أرغب في الحصول على مكان أساسي لتجميع المعلومات حول دعم Unicode بلغات مختلفة.هل هي جزء من اللغة الأساسية؟هل تتوفر في المكتبات؟هل هو غير متوفر على الإطلاق؟هل هناك مصدر شائع لمعلومات Unicode في إحدى اللغات؟لغة واحدة لكل إجابة من فضلك.وأيضًا إذا كان بإمكانك جعل اللغة عنوانًا يسهل العثور عليها.

لا يوجد حل صحيح

نصائح أخرى

بيرل

لدى Perl دعم Unicode مدمج، في الغالب.نوعا ما.من بيرلدوك:

  • com.perlunitut - برنامج تعليمي حول استخدام Unicode في لغة Perl.يُعلمك إلى حد كبير بشكل مطلق ما يجب عليك فعله وما لا ينبغي عليك فعله فيما يتعلق بـ Unicode.يغطي الأساسيات.
  • com.perlunifaq - الأسئلة المتداولة حول Unicode في لغة Perl.
  • com.perluniintro - مقدمة إلى Unicode في لغة Perl.أقل "وعظاً" من com.perlunitut.
  • com.perlunicode - لأنه عندما يتعين عليك معرفة كل ما يجب معرفته عن Unicode وPerl.

بيثون 3K

وبيثون 3K (أو 3.0 أو 3000) لديه نهج جديد للتعامل مع النص (يونيكود) والبيانات:
مقابل النص البيانات بدلا من مقابل يونيكود 8 بت . انظر أيضا يونيكود HOWTO .

جافا

ونفس مع .NET، يستخدم جافا UTF-16 داخليا: <لأ href = "http://java.sun.com/javase/6/docs/api/java/lang/String.html" يختلط = " noreferrer نوفولو "> java.lang.String

<اقتباس فقرة>   

وA String يمثل السلسلة في شكل UTF-16 التي <م> شخصيات التكميلية يتم تمثيل <م> أزواج بديلة (راجع المقطع <لأ href = "HTTP: // java.sun.com/javase/6/docs/api/java/lang/Character.html#unicode "يختلط =" نوفولو noreferrer "> يونيكود التمثيل الأحرف في فئة Character لمزيد من المعلومات). قيم المؤشر تشير إلى char وحدات متاحة، لذلك يستخدم الطابع التكميلي موقعين في String.

تحليل HQ9 +

والأمر Q ديه دعم يونيكود الكامل في معظم تطبيقات.

دلفي

دلفي 2009 تؤيد تماما يونيكود. لقد غيرت تنفيذ string إلى الافتراضي إلى ترميز Unicode 16 بت، ومعظم المكتبات بما في ذلك تلك طرف ثالث دعم يونيكود. يرى ماركو كانتو في دلفي ويونيكود .

وقبل دلفي 2009، ودعم يونيكود كان محدودا، ولكن كان هناك WideChar وWideString لتخزين سلسلة المشفرة 16-بت. انظر Unicode في دلفي للحصول على مزيد من المعلومات.

ملحوظة، لا يزال بإمكانك وضع تطبيق CJKV بلغتين دون استخدام يونيكود. على سبيل المثال، التحول JIS سلسلة المشفرة للحصول على ويمكن تخزين اليابانية باستخدام AnsiString عادي.

يذهب

جوجل اذهب إلى لغة البرمجة يدعم Unicode ويعمل مع UTF-8.

بايثون

بيثون 2 لديه الطبقات str و unicode. str كائنات تخزين بايت، unicode تقوم الكائنات بتخزين أحرف UTF-16.تدعم معظم وظائف المكتبة كليهما (على سبيل المثال. os.listdir('.') إرجاع قائمة str, os.listdir(u'.') إرجاع قائمة unicode أشياء).كلاهما يملكان encode و decode طُرق.

تمت إعادة تسمية Python 3 بشكل أساسي unicode ل str.بايثون 3 يعادل str سيكون النوع bytes. bytes لديه decode و str ان encode طريقة. منذ بايثون 3.3 str تستخدم الكائنات داخليًا أحد الترميزات المتعددة لحفظ الذاكرة.بالنسبة لمبرمجي بايثون، لا يزال يبدو وكأنه تسلسل Unicode مجرد.

تدعم بايثون:

  • ترميز فك
  • تطبيع
  • تحويل حالة بسيطة وتقسيمها على مسافة بيضاء
  • البحث عن الشخصيات حسب أسمائهم

لا تدعم لغة Python/لديها دعم محدود لما يلي:

  • التجميع (محدود)
  • تحويلات الحالة الخاصة حيث لا يوجد تعيين 1:1 بين الأحرف الصغيرة والكبيرة
  • التعبيرات العادية (لقد تم العمل عليه)
  • تجزئة النص
  • التعامل مع النص ثنائي الاتجاه

أنظر أيضا: الحقيقة حول Unicode في بايثون

جافا سكريبت

ويبدو قبل JS 1.3 لم يكن هناك دعم يونيكود. اعتبارا من 1.5، UTF-8، UTF-16 و UCS-2 ويدعم جميع. يمكنك استخدام يونيكود أحرف في سلاسل، regexs ومعرفات. المصدر

.NET (C#، VB.NET، ...)

متاجر .NET سلاسل داخليا على شكل سلسلة من System.Char أشياء.واحد System.Char يمثل UTF-16 وحدة الكود.

من وثائق MSDN على System.Char:

يستخدم .NET Framework شاربنية لتمثيل حرف Unicode.يحدد معيار Unicode كل حرف Unicode برقم قياسي فريد 21 بت يسمى نقطة رمز ، ويحدد نموذج ترميز UTF-16 الذي يحدد كيفية ترميز نقطة الكود في تسلسل من قيم واحدة أو أكثر من 16 بت.تتراوح كل قيمة 16 بت من سداسي عشري 0x0000 إلى 0xFFFF ويتم تخزينها في أ شار بناء.

مصادر إضافية:

تى سى ال

وكانت سلاسل تى سى ال تسلسل أحرف Unicode منذ تى سى ال 8.1 (1999 ). داخليا، وتحولت أنها حيوي بين UTF-8 (بدقة نفس التعديل UTF-8 كما جافا بسبب التعامل من الشخصيات U+00000) وUCS-2 (في endianness المضيفة وBOM، بالطبع). كافة السلاسل الخارجية (مع استثناء واحد)، بما في ذلك تلك التي تستخدم للاتصال مع نظام التشغيل، وداخليا يونيكود قبل أن تتحول إلى أي شيء ترميز مطلوب للمضيف (أو تم تكوين يدويا على قناة اتصالات). والاستثناء هو حيث البيانات نسخ بين قنوات الاتصالات اثنين مع ترميز المشتركة (وعدد قليل من قيود أخرى لا ثيق هنا) حيث يتم استخدام نقل ثنائي مباشر خالية من نسخة.

لا يتم التعامل مع أحرف خارج BMP حاليا سواء داخليا أو خارجيا. هذه هي مشكلة معروفة.

مخطط R6RS

يتطلب تنفيذ Unicode 5.1.جميع السلاسل في "تنسيق Unicode".

الصدأ

سلاسل

والصدأ و(std::String و&str) هي دائما صحيحة UTF-8، وعدم استخدام الإنهاء فارغة، ونتيجة لذلك لا يمكن فهرستها كما صفيف، مثل أنها يمكن أن تكون في C / C ++، وما يمكن أن تكون شرائح نوعا ما مثل الذهاب باستخدام .get منذ 1.20، مع التحذير من أنه ستفشل إذا كنت تشريح وسط نقطة رمز محاولة.

لقد الصدأ أيضا OsStr / OsString للتفاعل مع نظام التشغيل المضيف. انها مجموعة بايت على يونيكس (التي تحتوي على أي تسلسل بايت). على النوافذ انها WTF-8 (A فائقة مجموعة من UTF-8 الذي يعالج المشكلة بشكل غير صحيح سلاسل Unicode التي يسمح في ويندوز وجافا سكريبت)، &str وString يمكن تحويلها بحرية لOsStr أو OsString، ولكنها تحتاج إلى تدقيق لاستخدامه سرا الآخر الطريقة. إما عن طريق الفشل في يونيكود غير صالح، أو استبدال مع استبدال حرف يونيكود. (وهناك أيضا Path / PathBuf، والتي هي مغلفة قاب OsStr / OsString).

وهناك أيضا CStr وCString أنواع، والتي تمثل خالية إنهاء سلاسل C، مثل OsStr على يونيكس أنها يمكن أن تحتوي بايت التعسفي.

والصدأ لا يعتمد مباشرة UTF-16. ولكن يمكن تحويل OsStr إلى UCS-2 على النوافذ.

اللثغة المشتركة (SBCL وCLisp)

http://www.sbcl.org/

ووفقا ل هذا و <لأ href = " "يختلط =" نوفولو noreferrer "> SBCL و CLisp دعم يونيكود.

الهدف-C

لا يوجد مدمج، وبصرف النظر عن كل ما يحدث لتكون متاحة كجزء من مكتبة C سلسلة.

ولكن، بمجرد إضافة أطر ...

مؤسسة (الكاكاو والكاكاو اللمس) ومؤسسة كور

وNSString وCFString كل تطبيق فئة جملة مبنية يونيكود بالكامل (في الواقع عدة فئات، وتفصيل تطبيق). وهما "خالية على الرقم سد" بحيث API واحد يمكن استخدامه مع حالات أخرى، والعكس بالعكس.

لالبيانات التي لا تعبر بالضرورة عن النص، هناك NSData وCFData. يوفر NSString الأساليب ويوفر وظائف CFString لترميز النص إلى بيانات وترجم النص من البيانات. تدعم مؤسسة الأساسية أكثر من مائة ترميزات مختلفة، بما في ذلك جميع أشكال UTFs. وتنقسم ترميزات إلى مجموعتين: <لأ href = "http://developer.apple.com/mac/library/documentation/CoreFoundation/Reference/CFStringRef/Reference/reference.html#//apple_ref/c/tdef/CFStringBuiltInEncodings "يختلط =" نوفولو noreferrer "> ترميزات المدمج في ، والتي يتم دعمها في كل مكان، و <لأ href =" http://developer.apple.com/mac/library/documentation/CoreFoundation/Reference/CFStringRef/ المرجع / reference.html # // apple_ref / وثيقة / constant_group / External_String_Encodings "يختلط =" نوفولو noreferrer "> ترميزات الخارجية ، والتي على الأقل معتمدة على نظام التشغيل Mac OS X.

ويوفر NSString طرق لتطبيع لأشكال D، KD، C، أو KC. كل بإرجاع سلسلة جديدة.

وكلا NSString وCFString نقدم مجموعة واسعة من الخيارات مقارنة / الترتيب. هنا <لأ href = "http://developer.apple.com/mac/library/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html#//apple_ref/doc/constant_group/Search_and_Comparison_Options" يختلط = "نوفولو noreferrer"> أعلام خيار المقارنة المؤسسة و <لأ href = "http://developer.apple.com/mac/library/documentation/CoreFoundation/Reference/CFStringRef/Reference/reference.html#/ / apple_ref / وثيقة / constant_group / String_Comparison_Flags "يختلط =" نوفولو noreferrer "> أعلام خيار المقارنة مؤسسة كور في . انهم ليسوا جميعا مرادفا. على سبيل المثال، مؤسسة كور يجعل الحرفي (على رمز نقطة صارمة) مقارنة الافتراضي، في حين يجعل المؤسسة مقارنة غير حرفية (السماح الأحرف مع لهجات لمقارنة يساوي) الافتراضي.

لاحظ أن المؤسسة الأساسية لا يتطلب الهدف-C. في الواقع، تم إنشاؤه حد كبير لتوفير أكثر من الميزات من مؤسسة إلى المبرمجين الكربون، الذين اعتادوا على التوالي C أو C ++. ومع ذلك، وأظن الاستخدام الأكثر حداثة من هو في برامج الكاكاو أو الكاكاو التي تعمل باللمس، وكلها مكتوبة في الهدف-C أو C ++ الهدف،.

تحليل C / C ++

C

وC قبل C99 لا يوجد لديه بنيت في دعم يونيكود. ويستخدم الصفر صفائف حرف إنهاء (char* أو char[]) كسلاسل. يتم تحديد char من قبل بايت (8 بت).

وC99 يحدد وظائف wcs في الإضافات إلى str وظائف القديمة (مثل strlen -> wcslen). هذه المهام تأخذ wchar_t* بدلا من char*. wchar_t لتقف على نوع الحرف واسع. حجم wchar_t هو مترجم محددة، ويمكن أن تكون صغيرة مثل 8 بت. في حين المجمعين مختلفة في الواقع استخدام أحجام مختلفة، انها عادة ما تكون 16 بت (UTF-16) أو 32 بت (UTF-32).

وظائف مكتبة معظم C شفافة إلى UTF-8. مثلا إذا كان نظام التشغيل الخاص بك يدعم UTF-8 (ويتم تكوين UTF-8 كما محارف النظم الخاصة بك)، ثم إنشاء ملف باستخدام fopen تمرير سلسلة المشفرة UTF-8 سيتم إنشاء ملف اسمه بشكل صحيح.

C ++

والوضع في C ++ هي مشابهة جدا (std::string -> std::wstring)، ولكن هناك ما لا يقل عن الجهود الرامية إلى الحصول على نوع من <لأ href = "http://www.open-std.org/jtc1/sc22/wg21 /docs/papers/2013/n3572.html "يختلط =" نوفولو noreferrer "> دعم يونيكود في المكتبة القياسية .

D

وD يدعم UTF-8، UTF-16، وUTF-32 (شار، wchar، وdchar، على التوالي). ويمكن الاطلاع على الجدول مع جميع أنواع هنا .

PHP

وهناك بالفعل موضوع كامل على هذا على SO!

تحليل روبي

والاشياء الوحيد الذي يمكنني أن تجد لروبي قديم جدا وليس يجري الكثير من rubist، وأنا لست متأكدا من مدى دقة هو عليه.

<اقتباس فقرة>   

لسجل، روبي التي يدعمها UTF8، ولكن ليس متعدد البايت. داخليا، فإنه يفترض عادة السلاسل ناقلات بايت، رغم أن هناك مكتبات والخدع التي عادة يمكن استخدامها لجعل عمل الأشياء.

هنا .

روبي 1.9

وروبي 1.9 تعلق ترميزات إلى سلاسل. سلاسل الثنائية استخدام الترميز "ASCII-8BIT". في حين الترميز الافتراضي هو عادة UTF-8 على أي نظام حديث، لا يمكن أن نفترض أن جميع وظائف مكتبة طرف ثالث دوما بإرجاع السلاسل في هذا الترميز. قد يعود أي ترميز آخر (على سبيل المثال، بعض موزعي YAML تفعل ذلك في بعض الحالات). إذا قمت لسلسلة سلسلتين من ترميز مختلفة لك <م> قد الحصول على Encoding::CompatibilityError.

قوس

وقوس ليس لديها أي دعم يونيكود. ومع .

لوا

ولوا 5.3 له المدمج في مكتبة utf8، الذي يتعامل مع الترميز UTF-8. انها تسمح لك لتحويل سلسلة من codepoints إلى تسلسل بايت المقابل وعلى العكس من ذلك، احصل على طول (عدد codepoints في سلسلة)، تكرار عبر codepoints في سلسلة، احصل على موضع البايت من ن التمثيل البرمجي عشر. كما يوفر نمط، لاستخدامها من قبل وظائف مطابقة النمط في المكتبة string، التي تتناسب مع واحد تسلسل UTF-8 بايت.

ولوا 5.3 لديها رمز Unicode تسلسل نقطة الهروب التي يمكن استخدامها في سلسلة حرفية (على سبيل المثال، "\u{61}" ل"a"). أنها تترجم إلى سلاسل UTF-8 بايت.

ويمكن أن يتم تشفيرها لوا رمز مصدر في UTF-8 أو أي ترميز التي أحرف ASCII يستغرق بايت واحد. ليست مفهومة UTF-16 و UTF-32 من قبل مترجم الفانيليا لوا. ولكن السلاسل يمكن أن تحتوي على أي ترميز أو البيانات الثنائية التعسفي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top