سؤال

لا يتجاهل Saxparser الخاص بنا علامة ترتيب البايت الذي يظهر عند بداية الملف.

كيف أحصل على محلل ساكس لتجاهل علامة ترتيب البايت؟

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

المحلول

يبدو أنك قد تعطي مدخلات UTF-16 إلى saxparser والتي لا تتوقع UTF-16. حاول تحويل البيانات إلى UTF-8 ، وقد يساعد ذلك.

نصائح أخرى

تحقق من الملف في محرر Hex.

إذا كانت البايتات الأولية بالفعل \xEF\xBB\xBF تليها المستند نفسه ، فهو utf-8 faux-bom. على الرغم من أن UTF-8 FAUX-BOMS هي خطأ خاطئ وأدوات تولدها تحتاج إلى تدميرها بحمض البرمجة الخاصة ، إلا أن مواصفات XML تفعل يتطلب المحللون للاعتراف وتجاهل تسلسل البايت هذا ، لذلك إذا لم يكن محلل ساكس الخاص بك غير متوافق ويحتاج إلى بعض الركل.

إذا كانت البايتات الأولية التي تمنحك  في الواقع شيء مثل واحد من:

\xC3\xAF\xC2\xBB\xC2\xBF 
\xEF\xBB\xBF\xC3\xAF\xC2\xBB\xC2\xBF 
\xEF\x00\xBB\x00\xBF\x00
\xFF\xFE\xEF\x00\xBB\x00\xBF\x00

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

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

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

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