لقد اكتشفت مؤخرًا أنه إذا قمت بتضمين ‘~’ في سير ذاتية للمستخدم، فإنني أحصل على خطأ base64decode من Discourse. يمكنه التعامل مع جميع أنواع الأحرف الإشكالية الأخرى بشكل جيد (المسافات، =، %، &) ولكن ليس ‘~’ لسبب ما.
هل واجه أي شخص آخر هذه المشكلة؟
أول فكرة لدي هي أنه ربما يكون الترميز الخاص بي خاطئًا، لكنني لم أتمكن من معرفة ذلك.
من المحتمل أن يتم إصلاح ذلك، لكن هذا السؤال يتجاوز نطاق خبرتي ومهاراتي. ولكن بدافع الفضول العملي البحت: لماذا قد يستخدم شخص ما علامة المد (~) في سيرة ذاتية؟
أدير منتدى متعدد اللغات، وفي ثقافات أخرى، غالبًا ما يُستخدم الرمز “~”. على سبيل المثال، في اللغة الكورية، غالبًا ما يُستخدم في النهاية لتلطيف نبرتك، مثل “إذا كانت لديك أي أسئلة، فأخبرني بها~”.
يبدو أن urlsafe_b64encode يستبدل بعض الأحرف في ترميز base64. من المستندات:
قم بترميز sكائن شبيه بالبايت باستخدام الأبجدية الآمنة لـ URL ونظام الملفات، والتي تستبدل - بدلاً من + و _ بدلاً من / في أبجدية Base64 القياسية، وتعيد bytes المرمزة. لا يزال من الممكن أن تحتوي النتيجة على =.
هذا يعني أن النتيجة ليست base64 قياسية، ولن تكون متوافقة مع فك ترميز Discourse.
أوصي باستخدام الدالة b64encode العادية بدلاً من ذلك. يجب أن يتعامل مكتب HTTP الخاص بك مع الهروب من عناوين URL إذا لزم الأمر.