من الممكن إصلاح أسماء الملفات الصينية المشوهة؟

StackOverflow https://stackoverflow.com/questions/2498790

سؤال

أقوم بالتنزيل عبر FTP بعض الملفات بأسماء صينية (BIG5 مشفرة) ، وتعرض Filezilla أسماء الملفات هذه على أنها قمامة (حيث لا يمكن لـ FTP التعامل مع أي ترميز بخلاف ASCII و UTF-8 ، على الأقل في أسماء متوافقة معتاد).

بالنظر إلى اسم ملف مع أحرف مشوهة ، هل من الممكن أن أقوم بإصلاح الترميز والحصول على سلسلة ملفات ملفية مناسبة نظرًا لأنني أعرف بالفعل المصدر الترميز؟ هل سيؤدي عميل FTP إلى تفسير BIG5 على أنها بايتات UTF-8 التي تجعل التحويل إلى Big5 صعبًا؟

خطواتي المقترحة (في Java): 1. احصل على اسم الملف المشهور باستخدام كائن الملف. 2. getBytes باستخدام UTF-8. 3. قم بإنشاء سلسلة جديدة باستخدام تلك البايتات في Big5. 4. اكتب اسم الملف الذي تم فك تشفيره إلى الملف.

هل ستعمل الطريقة أعلاه؟

هل كانت مفيدة؟

المحلول

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

قد تكون محظوظًا لأن تكون قادرًا على الحصول على نسبة مئوية معينة من الشخصيات الأصلية ، حيث تصادف أن تكون BIG5 بشكل صالح و UTF-8 صالحين ، لكنني أشك في أنك ستتمكن من استرداد اسم الملف بالكامل.

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

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