J'ai un service qui doit générer xml. Actuellement j'utilise jaxb et un Marshaller pour créer le xml en utilisant un StringWriter.javax.xml.bind.Marshaller codant des caractères Unicode avec leurs valeurs décimales
Voici la sortie actuelle que je reçois.
<CompanyName>Bakery é &</CompanyName>
Bien que cela puisse convenir à certains services Web, j'ai besoin d'échapper des caractères Unicode spéciaux. Le service qui est comsuming mon xml doit avoir ceci:
<CompanyName>Bakery é &</CompanyName>
Si je StringEscapeUtils
de commons-lang
je me retrouve avec quelque chose comme le follwing. Celui-ci ne fonctionne pas aussi:
<CompanyName>Bakery &#233; &amp;</CompanyName>
Y a-t-il des paramètres du Marshaller qui me permettra d'encoder ces caractères spéciaux comme leurs valeurs décimales?
'é' (U + 00E9) est supporté par ISO-8859-1, donc US-ASCII serait meilleur. – McDowell
D'accord, merci -Ed –
Bien que j'aurais dû commencer un fil différent, mais juste en pensant, avec la logique qui a été suggérée, le symbole de l'euro est remplacé par et il va aussi dans le xml, mais quand j'essaie de le voir dans le navigateur, ça ne montre rien. Je connais la raison pour laquelle, même si le codage est spécifié en US-ASCII, le navigateur traite les références de caractères numériques (telles que ) comme des caractères Unicode, quel que soit le codage utilisé pour votre document. Donc, nous envoyons US-ASCII "", mais cela est interprété comme UTF-8 et donc il devient le caractère de contrôle qui est un "vide" .. –