I have a bunch of XML files that are declared as encoding=”IBM1047″ but they don’t seem to be:
- when converted with iconv from IBM1047 to UTF-8 or ISO8859-1 (Latin 1) they result in indecipherable garbage
- file -i <name_of_file> says “unknown 8-bit encoding”
- when parsed by an XML parser the parser complains there is text before the prolog but there isn’t; this error doesn’t happen if I change the encoding in the XML declaration to something else
It would be nice to find out the real encoding of these files (I tried ‘file -i’ as mentioned above, and ‘enca’ but it’s limited to Slavic languages (the files are in French)).
I have little control about how these files are produced; short of finding the actual encoding, if I can prove conclusively that the files are not in fact IBM1047 I may get the producer to do something about it.
How do I prove it?
Some special chars:
- ‘é’ is ‘©’
- ‘à’ is ‘ë’
- ‘è’ is ‘Û’
- ‘ê’ is ‘ª’
The only way to prove that any class of data streams is encoded or not encoded in a particular way is to know, for at least one instance of the class, exactly what characters are supposed to be in the stream. If you have agreement on what characters are (supposed to be) in a particular test case, you can then calculate the bits that should be in the IBM 1047 (or any other) encoding of the test case, and compare those bits to the bits you actually see.
One simple way for EBCDIC data to be mangled, of course, is for it to have passed through some EBCDIC/ASCII gateway along the way that used a translate table designed for some other EBCDIC code page. But if you are working with EBCDIC data you presumably already know that.