Problema con XML UTF-8 in "Importa da file XML"

Buongiorno, uso spesso la funzione “Importa da file XML - Importa una fattura, anche se compilata parzialmente, in formato XML” presente nella sezione “Fatture e Corrispettivi -> Fatturazione elettronica e Conservazione”.

Quando importo un file che contiene caratteri UTF-8, dopo l’importazione mi trovo tali caratteri errati, come se fossero stati interpretati in altro charset (per esempio ISO-8859-1).

Il file XML che carico lo genero io, ha sia il BOM UTF-8, sia l’encoding specificato nel tag di apertura xml

00000000  ef bb bf 3c 3f 78 6d 6c  20 76 65 72 73 69 6f 6e  |...<?xml version|
00000010  3d 22 31 2e 30 22 20 65  6e 63 6f 64 69 6e 67 3d  |="1.0" encoding=|
00000020  22 55 54 46 2d 38 22 20  73 74 61 6e 64 61 6c 6f  |"UTF-8" standalo|
00000030  6e 65 3d 22 79 65 73 22  3f 3e 0a 3c 6e 73 32 3a  |ne="yes"?>.<ns2:|
00000040  46 61 74 74 75 72 61 45  6c 65 74 74 72 6f 6e 69  |FatturaElettroni|
00000050  63 61 20 78 6d 6c 6e 73  3a 6e 73 32 3d 22 68 74  |ca xmlns:ns2="ht|
00000060  74 70 3a 2f 2f 69 76 61  73 65 72 76 69 7a 69 2e  |tp://ivaservizi.|
00000070  61 67 65 6e 7a 69 61 65  6e 74 72 61 74 65 2e 67  |agenziaentrate.g|
00000080  6f 76 2e 69 74 2f 64 6f  63 73 2f 78 73 64 2f 66  |ov.it/docs/xsd/f|
00000090  61 74 74 75 72 65 2f 76  31 2e 32 22 20 76 65 72  |atture/v1.2" ver|
000000a0  73 69 6f 6e 65 3d 22 46  50 52 31 32 22 3e 0a 20  |sione="FPR12">. |
000000b0  20 3c 46 61 74 74 75 72  61 45 6c 65 74 74 72 6f  | <FatturaElettro|
000000c0  6e 69 63 61 48 65 61 64  65 72 3e 0a 20 20 20 20  |nicaHeader>.    |

… segue la codifica UTF-8 del carattere ° (c2 b0) che mi sembra corretta:

000009c0 31 c2 b0 20 62 69 6d 65 73 74 72 65 20 32 30 31 |1.. bimestre 201|

Mi sembra che il problema si verifichi anche reimportando con la stessa procedura un file XML corretto generato dopo la compilazione manuale della fattura, che sono privi di BOM ma hanno l’intestazione/tag XML UTF-8.

Sto sbagliando qualcosa io oppure è un bug?

Grazie

1 Mi Piace

Dovrebbe essere “C2B0” non “c2b0”

Mi sa che è un bug. La sequenza di caratteri che ottieni (°) è esattamente quello che otterresti interpretando la sequenza UTF-8 come ISO-8859-1 oppure Windows-1250.
Forse dalla lettura del file xml alla scrittura nel loro database c’è un passaggio che prende un buffer codificato in utf-8 e lo interpreta come ISO-8859-1.

1 Mi Piace

Tecnicamente però il campo descrizione supporta solo latin1 quindi può essere che dopo averlo importato lo reinterpreti.

Bisogna fare distinzione tra Latin-1 (o meglio Latin-1 Supplement), il blocco di caratteri unicode e latin1 inteso come ISO-8859-1 che è una codifica a 8 bit che permette, tra le altre cose, di codificare un sottoinsieme del blocco unicode Latin-1 Supplement.
Il fatto che l’XSD specifichi che quel particolare campo possa contenere solo certi caratteri, non implica nulla sul come questi debbano essere codificati (UTF-8 e ISO-8859-1 sono due possibili alternative, ma uno potrebbe per esempio anche usare UTF-16).

Confermo il bug, la settimana scorsa ho importato nel portale Fatture e Corrispettivi un file XML con encoding="UTF-8", senza BOM e contenente il carattere ì codificato come HEX c3ac ottenendo ì nella fattura importata.

Ma questi post li legge qualcuno di Agenzia delle Entrate ?