Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

utf-8 bom

4 réponses
Avatar
Manuel Spuhler
Bonjour,

je me heurte à un problème d'encodage avec utf-8. En effet ce format
contient une signature de 2-3 bytes au début, et un flux xml commence
donc par

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

ce qui le rend inutilisable...

Comme je débute en C#, je ne sais absolument pas comment me débarasser
de ces charactères. Est-ce que quelqu'un peut me venir en aide svp?

4 réponses

Avatar
Manuel Spuhler
> Tout dépend de ce que tu essayes de faire : c'est toi qui créé le
flux XML ? Comment ? tu le récupères et tu travailles avec ?



Hello,

je recois un string en post sur un fichier aspx, qui renvoie alors un
flux xml construit dynamiquement, en reponse a cette requete

// Set content-type
Response.ContentType = "text/xml";
Response.ContentEncoding = Encoding.UTF8;

StringBuilder reply = new StringBuilder();
reply.Append("n<?xml version="1.0" encoding="UTF-8"?>n");
..
return reply.ToString();

J'ai tente de le faire avec XmlTextWriter, mais la signature UTF-8 est
quand meme-la...
D'apres ce que je vois, il me semble qu'il faudrait que j'enleve les 3
bytes de depart
Avatar
LEBRUN Thomas
Esaye de ne pas mettre le saut de ligne au début

reply.Append("<?xml version="1.0" encoding="UTF-8"?>n");

Si cela ne marche pas, tu vas devoi, en effet, supprimer les 3 premiers bytes...
Pas forcément le plus simple :

--
LEBRUN Thomas
MCP Visual C# (70-316)


"Manuel Spuhler" a écrit :


> Tout dépend de ce que tu essayes de faire : c'est toi qui créé le
> flux XML ? Comment ? tu le récupères et tu travailles avec ?

Hello,

je recois un string en post sur un fichier aspx, qui renvoie alors un
flux xml construit dynamiquement, en reponse a cette requete

// Set content-type
Response.ContentType = "text/xml";
Response.ContentEncoding = Encoding.UTF8;

StringBuilder reply = new StringBuilder();
reply.Append("n<?xml version="1.0" encoding="UTF-8"?>n");
...
return reply.ToString();

J'ai tente de le faire avec XmlTextWriter, mais la signature UTF-8 est
quand meme-la...
D'apres ce que je vois, il me semble qu'il faudrait que j'enleve les 3
bytes de depart








Avatar
Patrice Manac'h
Bonsoir,

regardez UTF8Encoding. Son contructeur permet de préciser le comportement du
BOM. Et GetBytes() permet de récupérer les données.

Cordialement,

P. Manac'h
MCS France

"Manuel Spuhler" a écrit dans le message de news:
cceqsg$p6$

Tout dépend de ce que tu essayes de faire : c'est toi qui créé le flux
XML ? Comment ? tu le récupères et tu travailles avec ?



Hello,

je recois un string en post sur un fichier aspx, qui renvoie alors un flux
xml construit dynamiquement, en reponse a cette requete

// Set content-type
Response.ContentType = "text/xml";
Response.ContentEncoding = Encoding.UTF8;

StringBuilder reply = new StringBuilder();
reply.Append("n<?xml version="1.0" encoding="UTF-8"?>n");
..
return reply.ToString();

J'ai tente de le faire avec XmlTextWriter, mais la signature UTF-8 est
quand meme-la...
D'apres ce que je vois, il me semble qu'il faudrait que j'enleve les 3
bytes de depart







Avatar
Manuel Spuhler
Merci,

Après essais, les 3 premiers bytes ne sont pas contenus dans le flux
xml mais bien dans la page et donc dans Response.ContentEncoding =
Encoding.UTF8;

Au final j'ai suivi la piste d'enlever la signature UTF-8 avec le
constructeur :

UTF8Encoding Utf8NoBom = new UTF8Encoding(false);
Response.ContentType = "text/xml";
Response.ContentEncoding = Utf8NoBom;

et ça marche ;-)