XML - البيانات الموجودة على مستوى الجذر غير صالحة
-
08-07-2019 - |
سؤال
لدي ملف XSD مشفر بـ UTF-8، وأي محرر نصوص أقوم بتشغيله من خلاله لا يُظهر أي حرف في بداية الملف، ولكن عندما أسحبه إلى مصحح أخطاء Visual Studio، أرى بوضوح رسالة فارغة المربع الموجود أمام الملف.
أحصل أيضًا على الخطأ:
البيانات على مستوى الجذر غير صالح.السطر 1، الموضع 1.
هل يعرف أحدكم ما هذا؟
تحديث:تم تحرير المنشور لتأهيل نوع الملف.إنه ملف XSD تم إنشاؤه بواسطة منشئ XSD من Microsoft.
المحلول
اتضح أن الجواب هو أن ما أراه هو علامة ترتيب البايت, ، وهو حرف يخبر كل ما يقوم بتحميل المستند بما تم ترميزه فيه.في حالتي، تم ترميزه بـ utf-8، لذلك كان BOM المقابل EF BB BF
, ، كما هو مبين أدناه.لإزالته، فتحته المفكرة ++ وانقر على "Encode in UTF-8 بدون BOM"، كما هو موضح أدناه:
.
لرؤية BOM فعليًا، كان علي أن أفتحه TextPad في الوضع الثنائي:، وأجرى بحث جوجل عن "EF BB BF
".
استغرق الأمر مني حوالي 8 ساعات لأكتشف أن هذا هو السبب، لذلك فكرت في مشاركة هذا مع الجميع.
تحديث:إذا كنت قد قرأت مشاركة مدونة جويل سبولسكي: الحد الأدنى المطلق الذي يجب أن يعرفه كل مطور برامج بشكل مطلق وإيجابي عن Unicode ومجموعات الأحرف (بدون أعذار!), ، فربما لم أواجه هذه المشكلة.
نصائح أخرى
إليك كيفية القيام بذلك باستخدام vim:
# vim file.xml
:set nobomb
:wq