سؤال

لدي ملف XSD مشفر بـ UTF-8، وأي محرر نصوص أقوم بتشغيله من خلاله لا يُظهر أي حرف في بداية الملف، ولكن عندما أسحبه إلى مصحح أخطاء Visual Studio، أرى بوضوح رسالة فارغة المربع الموجود أمام الملف.

Box in file

أحصل أيضًا على الخطأ:

البيانات على مستوى الجذر غير صالح.السطر 1، الموضع 1.

alt text

هل يعرف أحدكم ما هذا؟

تحديث:تم تحرير المنشور لتأهيل نوع الملف.إنه ملف XSD تم إنشاؤه بواسطة منشئ XSD من Microsoft.

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

المحلول

اتضح أن الجواب هو أن ما أراه هو علامة ترتيب البايت, ، وهو حرف يخبر كل ما يقوم بتحميل المستند بما تم ترميزه فيه.في حالتي، تم ترميزه بـ utf-8، لذلك كان BOM المقابل EF BB BF, ، كما هو مبين أدناه.لإزالته، فتحته المفكرة ++ وانقر على "Encode in UTF-8 بدون BOM"، كما هو موضح أدناه:

Saving in NotePad++.

لرؤية BOM فعليًا، كان علي أن أفتحه TextPad في الوضع الثنائي:، وأجرى بحث جوجل عن "EF BB BF".

binary mode

استغرق الأمر مني حوالي 8 ساعات لأكتشف أن هذا هو السبب، لذلك فكرت في مشاركة هذا مع الجميع.

تحديث:إذا كنت قد قرأت مشاركة مدونة جويل سبولسكي: الحد الأدنى المطلق الذي يجب أن يعرفه كل مطور برامج بشكل مطلق وإيجابي عن Unicode ومجموعات الأحرف (بدون أعذار!), ، فربما لم أواجه هذه المشكلة.

نصائح أخرى

إليك كيفية القيام بذلك باستخدام vim:

# vim file.xml
:set nobomb
:wq
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top