• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 686
  • Last Modified:

Opening utf-16 xml files in Visual Studio 2005


If I edit the following xml file in Vistual Studio 2005 (File -> Open -> File...), it shows me nothing as the Error List tab contains the following error:
Error      1      Invalid token 'Text' at root level of document.      C:\Users\rich\Downloads\sample.xml      1      1      Miscellaneous Files

Here's the simple xml file.
<?xml version="1.0" encoding="utf-16"?>
<Report />

Changing the xml file to be utf-8 as follows:
<?xml version="1.0" encoding="utf-8"?>
<AssessmentReport />

allows VS to open the file correctly.

Why is this?  Please note that I am getting this xml file from a third party, so it's not really possible to change the utf-16 to utf-8 in practice.

  • 3
  • 3
1 Solution
Bob LearnedCommented:
I really don't understand why any XML needs any more than UTF-8 or ISO-8559-1 (1252) encoding.  I don't know of any way around this, other than changing the encoding.
rdefuriaAuthor Commented:
Yeah, I agree... but the provider says that is the default output of whatever .NET process they are using to create the .xml.

I guess I am forced to keep editing / reading it with Notepad or Notepad++ instead of VS or MSIE...
Bob LearnedCommented:
If they are using XSLT transformation, the default is to use UTF-16 encoding, but you can override that.
The new generation of project management tools

With monday.com’s project management tool, you can see what everyone on your team is working in a single glance. Its intuitive dashboards are customizable, so you can create systems that work for you.

rdefuriaAuthor Commented:
Oh, really?   Can you tell me how to have them override that?  That will suffice as a solution...
Bob LearnedCommented:
I used to have code for that, but it got lost somewhere...

But, I believe that it is something like this:


XslCompiledTransform xslt1 = new XslCompiledTransform();

            XPathDocument doc1 = new XPathDocument(new StringReader(source));

            StringBuilder sb1 = new StringBuilder();

            XmlWriterSettings settings = new XmlWriterSettings();
            settings.OmitXmlDeclaration = true;
            settings.Encoding = System.Text.Encoding.UTF8;
            XmlWriter xsltOutput1 = XmlWriter.Create(sb1,settings);

rdefuriaAuthor Commented:
Turns out they could change it from utf-16 to utf-8 using your suggestion.
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Path Explorer

An intuitive utility to help find the CSS path to UI elements on a webpage. These paths are used frequently in a variety of front-end development and QA automation tasks.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

  • 3
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now