giordano
giordano

Reputation: 3162

xml not well formed due to umlaut characters.

I have an xml-file with declaration:

<?xml version="1.0" encoding="utf-8"?>

When I open it with 3 different editors I got the following:

enter image description here

Obviously, there are 3 different representations. Notepad gives me the correct symbol, Notepad++ gives me hexadecimal and emacs octal code.

I have a Perl code which tests if an xml is well formed. As soon the xml have these umlaut characters the xml-file is not well formed and can't be loaded in my database. When I remove all umlaut characters (and greek symbols, etc.) the xml-file is well formed and I can import the file in the database.

My goal is to have an xml-file which I can import into a database considering umlaut characters (and greek symbols, etc.).

What is the reason for this behaviour? Is it caused when the xml was created?

Upvotes: 0

Views: 2798

Answers (1)

Michael Kay
Michael Kay

Reputation: 163655

It looks likely to me that the ä character in your input is encoded as xE4, which is the representation of the character in iso-8859-1 (and Windows CP-1252), but is not the correct representation in UTF-8. Your three editors are dealing with the inconsistency between the declared encoding in the XML declaration and the actual encoding in different ways.

Fix the problem by ensuring that the encoding named in the XML declaration matches the actual encoding of the characters.

The problem may have been introduced when the XML file was first created, or it may have been introduced by some process that changed the character encoding subsequently, without changing the XML declaration to match the new encoding. This could happen if the file was transcoded by a non-XML-aware process.

Upvotes: 2

Related Questions