الإنجليزيةالفرنسيةالإسبانية

OnWorks فافيكون

perlunifaq - عبر الإنترنت في السحابة

قم بتشغيل perlunifaq في موفر الاستضافة المجاني OnWorks عبر Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

هذا هو الأمر perlunifaq الذي يمكن تشغيله في موفر الاستضافة المجاني OnWorks باستخدام إحدى محطات العمل المجانية المتعددة عبر الإنترنت مثل Ubuntu Online أو Fedora Online أو محاكي Windows عبر الإنترنت أو محاكي MAC OS عبر الإنترنت

برنامج:

اسم


perlunifaq - الأسئلة الشائعة حول Perl Unicode

Q A


هذه قائمة بالأسئلة والأجوبة حول Unicode في لغة Perl، والمراد قراءتها بعد ذلك
com.perlunitut.

com.perlunitut ليس في الحقيقة a يونيكود الدورة التعليمية، is ذلك؟
لا، وهذه ليست في الواقع إحدى الأسئلة الشائعة حول Unicode.

لدى Perl واجهة مجردة لجميع ترميزات الأحرف المدعومة، لذلك هذه هي
في الواقع برنامج تعليمي عام حول "التشفير" والأسئلة الشائعة حول "التشفير". لكن الكثير من الناس يعتقدون أن Unicode
خاص وساحر، ولم أرغب في أن أخيب ظنهم، لذلك قررت الاتصال بـ
توثيق البرنامج التعليمي Unicode.

ابحث عن حرف ترميزات هل بيرل الدعم؟
لمعرفة ترميزات الأحرف التي يدعمها Perl، قم بتشغيل:

بيرل -MEncode -le "طباعة للتشفير->الترميزات(':الكل')"

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

يجب عليك أيضًا التحقق من الوحدات النمطية الخاصة بك وترقيتها إذا لزم الأمر. على سبيل المثال،
يتطلب HTML::Entities الإصدار >= 1.32 ليعمل بشكل صحيح، على الرغم من وجود سجل التغيير
صامت حول هذا.

ابحث عن عن الصابون ثنائي البيانات، مثل الصور؟
حسنًا، بصرف النظر عن "binmode $fh" المجرد، لا يجب أن تعاملهم بشكل خاص. (بينمود
هناك حاجة إليها لأنه بخلاف ذلك قد يقوم Perl بتحويل نهايات الأسطر على أنظمة Win32.)

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

متى ينبغي I فك شفرة or تشفير؟
عندما تقوم بتوصيل النص مع أي شيء خارج عن عملية بيرل الخاصة بك،
مثل قاعدة بيانات أو ملف نصي أو مقبس أو برنامج آخر. حتى لو كان الشيء الذي أنت عليه
التواصل مع مكتوب أيضًا بلغة Perl.

ابحث عن if I لا فك تشفير؟
كلما تم استخدام السلسلة الثنائية المشفرة مع سلسلة نصية، فسوف يفترض Perl
أن السلسلة الثنائية الخاصة بك تم ترميزها باستخدام ISO-8859-1، المعروف أيضًا باسم latin-1. إذا لم يكن كذلك
latin-1، فسيتم تحويل بياناتك بشكل غير سار. على سبيل المثال، إذا كان UTF-8، فإن
يتم النظر إلى وحدات البايت الفردية من الأحرف متعددة البايت كأحرف منفصلة، ​​ثم مرة أخرى
تم تحويله إلى UTF-8. يمكن مقارنة هذا الترميز المزدوج بترميز HTML المزدوج
(">")، أو تشفير URI مزدوج (%253E).

يُعرف فك التشفير الضمني الصامت هذا باسم "الترقية". قد يبدو ذلك إيجابيا، لكنه كذلك
الأفضل لتجنب ذلك.

ابحث عن if I لا تشفير؟
سيتم إرسال السلسلة النصية الخاصة بك باستخدام البايتات بتنسيق Perl الداخلي. في بعض الحالات،
سوف يحذرك Perl من أنك تفعل شيئًا خاطئًا، بتحذير ودي:

حرف واسع في الطباعة على السطر example.pl 2.

نظرًا لأن التنسيق الداخلي غالبًا ما يكون UTF-8، فمن الصعب اكتشاف هذه الأخطاء، نظرًا لأن UTF-8 كذلك
عادة الترميز الذي تريده! لكن لا تكن كسولًا ولا تستخدم حقيقة لغة بيرل
التنسيق الداخلي هو UTF-8 لصالحك. قم بالتشفير بشكل صريح لتجنب الأخطاء الغريبة و
أظهر لمبرمجي الصيانة أنك فكرت في هذا الأمر.

Is هناك a طريق إلى تلقائيا فك شفرة or تشفير؟
إذا تم تشفير جميع البيانات التي تأتي من مقبض معين بنفس الطريقة تمامًا، فيمكنك ذلك
اطلب من نظام PerlIO أن يقوم بفك تشفير كل شيء تلقائيًا باستخدام طبقة "التشفير". لو
إذا قمت بذلك، فلا يمكنك أن تنسى عن طريق الخطأ فك التشفير أو التشفير بعد الآن، على الأشياء التي تستخدم
مقبض الطبقات.

يمكنك توفير هذه الطبقة عند "فتح" الملف:

افتح $fh, '>:encoding(UTF-8)', $filename; # الترميز التلقائي عند الكتابة
افتح $fh, '<:encoding(UTF-8)', $filename; # فك التشفير التلقائي عند القراءة

أو إذا كان لديك بالفعل مقبض ملف مفتوح:

binmode $fh, ':encoding(UTF-8)';

يمكن لبعض برامج تشغيل قواعد البيانات الخاصة بـ DBI أيضًا التشفير وفك التشفير تلقائيًا، ولكن هذا هو الحال
يقتصر أحيانًا على ترميز UTF-8.

ابحث عن if I لا علم التي ترميز وكان مستخدم؟
افعل كل ما بوسعك لمعرفة ذلك، وإذا كان عليك ذلك: خمن. (لا تنسى توثيق ملفك
تخمين مع تعليق.)

يمكنك فتح المستند في مستعرض ويب، وتغيير مجموعة الأحرف أو الحرف
الترميز حتى تتمكن بصريًا من التأكد من أن جميع الأحرف تبدو كما ينبغي.

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

يستطيع I تستخدم يونيكود in my بيرل مصادر؟
نعم يمكنك! إذا كانت مصادرك مشفرة بـ UTF-8، فيمكنك الإشارة إلى ذلك باستخدام "استخدام utf8"
براغما.

استخدام utf8 ؛

هذا لا يؤثر على مدخلاتك أو مخرجاتك. إنه يؤثر فقط على طريقتك
تتم قراءة المصادر. يمكنك استخدام Unicode في سلسلة حرفية، في المعرفات (لكنها لا تزال
يجب أن تكون "أحرف كلمة" وفقًا لـ "\w")، وحتى في المحددات المخصصة.

البيانات :: شاحنة قلابة لا على استعادة هيه Utf8 علَم؛ is it كسر؟
لا، قدرات Unicode الخاصة بـ Data::Dumper كما ينبغي أن تكون. لقد كان هناك بعض
الشكاوى من أنه يجب استعادة علامة UTF8 عند قراءة البيانات مرة أخرى باستخدام "eval".
ومع ذلك، يجب ألا تنظر حقًا إلى العلامة، ولا يوجد شيء يشير إلى أن Data::Dumper
يجب كسر هذه القاعدة.

إليك ما يحدث: عندما يقرأ Perl سلسلة نصية حرفية، فإنه يلتزم بتشفير 8 بت كما يلي:
طالما أنه يستطيع. (ولكن ربما تم ترميزه داخليًا في الأصل كـ UTF-8، عندما تقوم بذلك
ألقاه.) عندما يتعين عليه التخلي عن ذلك بسبب إضافة أحرف أخرى إلى النص
سلسلة، يقوم بترقية السلسلة بصمت إلى UTF-8.

إذا قمت بتشفير سلاسلك بشكل صحيح للإخراج، فلا شيء من هذا يهمك أنت
يمكن فقط "تقييم" البيانات الملقاة كما هو الحال دائمًا.

لماذا do رجإكس حرف فصول أحيانا مباراة فقط in هيه ASCII نطاق؟
بدءًا من Perl 5.14 (وجزئيًا في Perl 5.12)، ما عليك سوى وضع "ميزة الاستخدام"
'unicode_strings'" بالقرب من بداية البرنامج. ضمن نطاقه المعجمي
لا ينبغي أن يكون لديك هذه المشكلة. ويتم أيضًا تمكينه تلقائيًا ضمن "استخدام الميزة ':5.12'"
أو "استخدام الإصدار 5.12" أو استخدام "-E" في سطر الأوامر لـ Perl 5.12 أو أعلى.

الأساس المنطقي لطلب ذلك هو عدم كسر البرامج القديمة التي تعتمد على الطريق
سارت الأمور قبل ظهور Unicode. كانت تلك البرامج القديمة تعرف فقط عن ASCII
مجموعة الأحرف، وبالتالي قد لا تعمل بشكل صحيح مع الأحرف الإضافية. عندما تكون سلسلة
المشفر بـ UTF-8، يفترض بيرل أن البرنامج جاهز للتعامل مع Unicode، لكن متى
السلسلة ليست كذلك، يفترض بيرل أن ASCII فقط هو المطلوب، وكذلك تلك الأحرف المطلوبة
لم يتم التعرف على أحرف ASCII فيما يتعلق بما ستكون عليه في Unicode. "استخدام الميزة
'unicode_strings'" يخبر Perl بمعاملة جميع الأحرف على أنها Unicode، سواء كانت السلسلة كذلك
مشفرة بـ UTF-8 أم لا، وبالتالي تجنب المشكلة.

ومع ذلك، في Perls الأقدم، أو إذا قمت بتمرير سلاسل إلى إجراءات فرعية خارج الميزة
النطاق، يمكنك فرض قواعد Unicode عن طريق تغيير الترميز إلى UTF-8 عن طريق القيام بذلك
"utf8::upgrade($string)". يمكن استخدام هذا بأمان على أي سلسلة، لأنه يتحقق ولا يفعل ذلك
تغيير السلاسل التي تمت ترقيتها بالفعل.

للحصول على مناقشة أكثر تفصيلاً، راجع Unicode::Semantics on CPAN.

لماذا do بعض الأحرف ليس الأحرف الكبيرة or أحرف صغيرة بشكل صحيح؟
انظر جواب السؤال السابق.

كيفية يمكن I حدد if a سلسلة is a نص سلسلة or a ثنائي خيط؟
لا يمكنك. يستخدم البعض علامة UTF8 لهذا الغرض، ولكن هذا يعتبر سوء استخدام، ويؤدي إلى حسن التصرف
وحدات مثل Data::Dumper تبدو سيئة. العلم عديم الفائدة لهذا الغرض، لأنه مرفوع
عند استخدام ترميز 8 بت (افتراضيًا ISO-8859-1) لتخزين السلسلة.

وهذا شيء يجب عليك، كمبرمج، أن تتابعه؛ آسف. هل يمكن أن تنظر
اعتماد نوع من "التدوين المجري" للمساعدة في ذلك.

كيفية do I تحول تبدأ من ترميز فو إلى ترميز حاجِز؟
عن طريق تحويل سلسلة البايت المشفرة بـ FOO أولاً إلى سلسلة نصية، ثم السلسلة النصية
إلى سلسلة بايت مشفرة بـ BAR:

$text_string = decode('FOO', $foo_string);
$bar_string = encode('BAR', $text_string);

أو عن طريق تخطي جزء السلسلة النصية، والانتقال مباشرة من ترميز ثنائي واحد إلى ملف
آخر:

استخدم التشفير qw(from_to);
from_to($string, 'FOO', 'BAR'); # يغير محتويات السلسلة $

أو عن طريق السماح لفك التشفير والتشفير التلقائي بالقيام بكل العمل:

افتح $foofh، '<:encoding(FOO)'، 'example.foo.txt'؛
افتح $barfh، '>:encoding(BAR)'، 'example.bar.txt'؛
اطبع { $barfh } $_ while <$foofh>;

ابحث عن . "decode_utf8" "encode_utf8"؟
هذه صيغ بديلة لـ "decode('utf8',...)" و"encode('utf8',...)".

ابحث عن is a "واسع شخصية"؟
هذا مصطلح يستخدم للأحرف التي تشغل أكثر من بايت واحد.

يحدث تحذير Perl "حرف واسع في ..." بسبب مثل هذا الحرف. مع عدم تحديد
طبقة التشفير، يحاول Perl احتواء الأشياء في بايت واحد. عندما لا يستطيع ذلك، فإنه ينبعث هذا
تحذير (إذا تم تمكين التحذيرات)، ويستخدم البيانات المشفرة UTF-8 بدلاً من ذلك.

لتجنب هذا التحذير وتجنب وجود ترميزات إخراج مختلفة في دفق واحد،
قم دائمًا بتحديد التشفير بشكل صريح، على سبيل المثال مع طبقة PerlIO:

binmode STDOUT, ":encoding(UTF-8)";

الداخلية


ابحث عن is "ال Utf8 علَم"؟
من فضلك، ما لم تكن تقوم باختراق الأجزاء الداخلية، أو تصحيح الأخطاء الغريبة، فلا تفكر في
علامة UTF8 على الإطلاق. وهذا يعني أنه من المحتمل جدًا ألا تستخدم "is_utf8" أو "_utf8_on" أو
"_utf8_off" على الإطلاق.

علامة UTF8، والتي تسمى أيضًا SvUTF8، هي علامة داخلية تشير إلى أن التيار
التمثيل الداخلي هو UTF-8. بدون العلم، من المفترض أن يكون ISO-8859-1. بيرل
يتحول بين هذه تلقائيا. (في الواقع، بيرل عادة ما يفترض التمثيل
هو ASCII. راجع "لماذا تتطابق فئات أحرف regex أحيانًا فقط في نطاق ASCII؟"
في الاعلى.)

أحد التنسيقات الداخلية لـ Perl هو UTF-8. لسوء الحظ، لا يستطيع بيرل الاحتفاظ بـ
سرا، لذلك يعرف الجميع عن هذا. وهذا هو مصدر الكثير من الارتباك. هو من الأفضل أن
تظاهر بأن التنسيق الداخلي عبارة عن تشفير غير معروف، وأنه يتعين عليك دائمًا القيام بذلك
تشفير وفك التشفير بشكل صريح.

ابحث عن عن الصابون هيه "استعمال بايت" براغما؟
لا تستخدمه. ليس من المنطقي التعامل مع البايتات في سلسلة نصية، ولا معنى له
للتعامل مع الأحرف في سلسلة بايت. قم بإجراء التحويلات المناسبة (بواسطة
فك التشفير/التشفير)، وستسير الأمور بشكل جيد: ستحصل على عدد الأحرف لفك التشفير
البيانات، وعدد البايتات للبيانات المشفرة.

عادةً ما يكون "استخدام البايتات" محاولة فاشلة للقيام بشيء مفيد. فقط انسَ الأمر.

ابحث عن عن الصابون هيه "استعمال التشفير" براغما؟
لا تستخدمه. لسوء الحظ، فإنه يفترض أن بيئة المبرمج وبيئة
سيستخدم المستخدم نفس الترميز. سيستخدم نفس الترميز للكود المصدري و
ستدين و ستدوت. عندما يتم نسخ برنامج إلى جهاز آخر، لا يتم نسخ الكود المصدري
التغيير، ولكن بيئة STDIO قد تتغير.

إذا كنت بحاجة إلى أحرف غير ASCII في كود المصدر الخاص بك، فاجعله ملفًا مشفرًا بـ UTF-8 و
"استخدم utf8".

إذا كنت بحاجة إلى ضبط التشفير لـ STDIN وSTDOUT وSTDERR، على سبيل المثال بناءً على
لغة المستخدم، "استخدام مفتوح".

ابحث عن is هيه فرق ما بين ":التشفير" ":utf8"؟
نظرًا لأن UTF-8 هو أحد تنسيقات Perl الداخلية، يمكنك غالبًا تخطي الترميز أو
خطوة فك التشفير، ومعالجة علامة UTF8 مباشرة.

بدلاً من ":encoding(UTF-8)"، يمكنك ببساطة استخدام ":utf8"، الذي يتخطى خطوة التشفير
إذا كانت البيانات ممثلة بالفعل بـ UTF8 داخليًا. وهذا مقبول على نطاق واسع باعتباره جيدًا
السلوك عندما تكتب، ولكنه قد يكون خطيرًا عند القراءة، لأنه يسبب
عدم تناسق داخلي عندما يكون لديك تسلسلات بايت غير صالحة. استخدام ":utf8" للإدخال
يؤدي أحيانًا إلى حدوث انتهاكات أمنية، لذا يرجى استخدام ":encoding(UTF-8)" بدلاً من ذلك.

بدلاً من "فك التشفير" و"التشفير"، يمكنك استخدام "_utf8_on" و"_utf8_off"، ولكن هذا
يعتبر اسلوب سيء قد يكون "_utf8_on" خطيرًا على وجه الخصوص، لنفس السبب
يمكن ":utf8".

هناك بعض الاختصارات للخطوط الواحدة؛ انظر -C في perlrun.

ما هو هيه فرق ما بين "UTF-8" "utf8"؟
"UTF-8" هو المعيار الرسمي. "utf8" هي طريقة بيرل في أن يكون ليبراليًا فيما يتعلق به
يقبل. إذا كان عليك التواصل مع أشياء ليست ليبرالية جدًا، فقد ترغب في ذلك
فكر في استخدام "UTF-8". إذا كان عليك التواصل مع أشياء ليبرالية جدًا، فأنت كذلك
قد تضطر إلى استخدام "utf8". الشرح كامل موجود في Encode .

يُعرف "UTF-8" داخليًا باسم "utf-8-strict". يستخدم البرنامج التعليمي UTF-8 باستمرار، حتى
حيث يتم استخدام utf8 فعليًا داخليًا، نظرًا لصعوبة التمييز بينه، و
في الغالب غير ذي صلة.

على سبيل المثال، يمكن استخدام utf8 لنقاط التعليمات البرمجية غير الموجودة في Unicode، مثل 9999999،
ولكن إذا قمت بتشفير ذلك إلى UTF-8، فستحصل على حرف بديل (افتراضيًا؛ راجع
""التعامل مع البيانات المشوهة"" في التشفير لمزيد من الطرق للتعامل مع هذا.)

حسنًا، إذا كنت تصر على أن "التنسيق الداخلي" هو utf8، وليس UTF-8. (عندما لا يكون الأمر كذلك
التشفير.)

I ضائع مسار؛ ماذا ترميز is هيه داخلي شكل هل حقا؟
من الجيد أنك فقدت المسار، لأنه لا يجب أن تعتمد على التنسيق الداخلي
أي ترميز محدد. ولكن بما أنك سألت: بشكل افتراضي، يكون التنسيق الداخلي إما
ISO-8859-1 (latin-1)، أو utf8، اعتمادًا على تاريخ السلسلة. على EBCDIC
المنصات، قد يكون هذا مختلفًا حتى.

يعرف Perl كيفية تخزين السلسلة داخليًا، وسيستخدم هذه المعرفة عندما تقوم بذلك
"تشفير". بمعنى آخر: لا تحاول معرفة ما هو الترميز الداخلي المعين
السلسلة هي، ولكن بدلاً من ذلك فقط قم بتشفيرها في الترميز الذي تريده.

استخدم perlunifaq عبر الإنترنت باستخدام خدمات onworks.net


خوادم ومحطات عمل مجانية

قم بتنزيل تطبيقات Windows و Linux

  • 1
    ايوميتر
    ايوميتر
    أداة تحليل أداء الإدخال / الإخراج.
    الجمهور: المطورين والمعلومات
    التكنولوجيا والعلوم / البحث والنظام
    المسؤولين. واجهة المستخدم: Win32
    (مايكروسوفت ويندوز). برنامج ...
    تنزيل Iometer
  • 2
    JXplorer - متصفح Java Ldap
    JXplorer - متصفح Java Ldap
    برنامج جافا LDAP مع دعم LDIF ،
    الأمان (بما في ذلك SSL و SASL و GSSAPI) ،
    مترجم إلى العديد من اللغات (inc.
    الصينية) والمساعدة عبر الإنترنت ونماذج المستخدم و
    كثير غير ذلك ...
    تنزيل JXplorer - متصفح Java Ldap
  • 3
    PosteRazor - اصنع الملصق الخاص بك!
    PosteRazor - اصنع الملصق الخاص بك!
    تريد طباعة ملصق؟ تخفيضات PosteRazor
    ملف صورة إلى أجزاء ويمكنك ذلك
    ثم اطبعها على الطابعة وألصقها
    معًا على ملصق. من السهل FLTK على أساس
    استعمال...
    تنزيل PosteRazor - اصنع الملصق الخاص بك!
  • 4
    فيزر
    فيزر
    Phaser هو مفتوح سريع ومجاني وممتع
    مصدر إطار عمل لعبة HTML5 الذي يوفر
    عرض WebGL و Canvas عبر
    متصفحات الويب لسطح المكتب والجوال. ألعاب
    يمكن المشاركة ...
    تحميل Phaser
  • 5
    محرك VASSAL
    محرك VASSAL
    VASSAL هو محرك لعبة للإبداع
    النسخ الإلكترونية للسبورة التقليدية
    وألعاب الورق. يوفر الدعم ل
    عرض قطعة اللعبة والتفاعل ،
    و...
    قم بتنزيل محرك VASSAL
  • 6
    OpenPDF - شوكة iText
    OpenPDF - شوكة iText
    OpenPDF هي مكتبة جافا للإنشاء
    وتحرير ملفات PDF باستخدام LGPL و
    ترخيص MPL مفتوح المصدر. OpenPDF هو ملف
    LGPL / MPL وريث مفتوح المصدر لـ iText ،
    ا...
    قم بتنزيل OpenPDF - Fork of iText
  • أكثر "

أوامر لينكس

Ad