سؤال
الأسلوب المعتاد URL ترميز unicode الحرف هو تقسيمه إلى 2 %سمو رموز.(\u4161 => %41%61)
لكن كيف unicode الموقر عند فك?كيف يمكنك أن تعرف أن %41%61 هو \u4161 مقابل \x41\x61 ("Aa")?
8-بت الشخصيات, التي تتطلب ترميز يسبقه %00?
أو النقطة التي أحرف unicode المفترض أن تكون فقدت/الانقسام ؟
المحلول
وفقا ويكيبيديا:
القياسية الحالية
عام URI جملة ولايات جديدة URI مخططات التي تنص على تمثيل البيانات الشخصية في URI يجب ، تأثير تمثل الأحرف من تحفظ دون ترجمة ، و يجب تحويل جميع شخصيات بايت وفقا UTF-8 ثم في المئة ترميز تلك القيم.وكان هذا الشرط قدم في كانون الثاني / يناير 2005 نشر RFC 3986.أوري مخططات قدم قبل هذا التاريخ لا المتضررة.
لا يتناولها الحالي مواصفات ماذا تفعل مع ترميز البيانات الشخصية.على سبيل المثال ، في أجهزة الكمبيوتر الشخصية البيانات يظهر في ترميز شكل في بعض المستويات ، وبالتالي يمكن أن تعامل على أنها إما الثنائية البيانات أو البيانات الشخصية عندما يجري تعيين URI الشخصيات.ويفترض ، الأمر متروك URI مخطط المواصفات لحساب هذا إمكانية تتطلب واحد أو أخرى, ولكن في الممارسة العملية ، قليلة ، إن وجدت ، في الواقع لا.
غير القياسية تطبيقات
يوجد ترميز غير قياسي على أحرف Unicode:%uxxxx ، حيث xxxx هو Unicode قيمة تمثيل أربعة أرقام ست عشرية.هذا السلوك لم يتم تحديد أي RFC و قد تم رفضه من قبل W3C.الثالث الطبعة ECMA-262 لا يزال يتضمن الهروب(سلسلة) وظيفة يستخدم هذا بناء الجملة ، ولكن أيضا encodeURI(uri) وظيفة أن يحول إلى UTF-8 ، في المئة-بترميز كل الثماني.
يبدو تماما إلى الشخص كتابة unencode الطريقة ليست معايير متعة ؟
نصائح أخرى
ما أفعله دائما هو أول UTF-8 ترميز Unicode السلسلة لجعلها سلسلة من 8 بت الأحرف قبل هروبه أي من تلك مع %سمو.
P. S.- أنا يمكن أن نأمل فقط غير القياسية تطبيقات (%uxxxx) هي قليلة ومتباعدة.
منذ أوري أدخلت قبل unicode كان حولها أو على الأقل تستخدم على نطاق واسع ، أتصور أن هذا هو التنفيذ سؤال محدد.UTF-8 ترميز النص الخاص بك ، ثم الهروب التي في العادي يبدو وكأنه فكرة أفضل, منذ ذلك تماما إلى الوراء متوافقة مع أي ASCII/ANSI نظم في المكان, على الرغم من أنك قد تحصل على الغريب غريب حرف أو اثنين.
على الطرف الآخر, لفك, كنت unescape النص الخاص بك, والحصول على UTF-8 سلسلة.إذا كان شخص ما باستخدام نظام قديم يحاول أن يرسل لك بعض البيانات في ASCII/ANSI هناك أي ضرر ، (تقريبا) UTF-8 ترميز بالفعل.