2010-11-13 29 views
2

J'ai juste commencé à utiliser Apache Commons StringEscapeUtils.Bug dans Apache Commons StringEscapeUtil?

Selon http://www.w3schools.com/tags/ref_entities.asp, Ö doit correspondre à Ö. Cependant,

System.out.println(StringEscapeUtils.unescapeHtml4("Ö")); 

impressions

× 

Est-ce un bug? Ou qu'est-ce qui me manque?

+0

Où il imprimer cela? Sur la console? – cherouvim

+0

Non, sur l'imprimante ... jk, oui, dans la console. – aioobe

+0

Votre console peut-elle afficher 'Ö'? – cherouvim

Répondre

2

version 2.5 StringEscapeUtils.unescapeHtml impressions Ö

version 3.0 beta-StringEscapeUtils.unescapeHtml3 et StringEscapeUtils.unescapeHtml4 print ×

En général, j'utiliser la dernière version stable (actuellement 2.5). On dirait un bug mais je ne pouvais pas trouver quelque chose d'utile dans https://issues.apache.org/jira/browse/LANG

+0

Aha, bon à savoir. Je vais essayer 2.5! – aioobe

+0

Confirmé. 2,5 œuvres. Bug dans la bêta je suppose. Merci cherouvim! – aioobe

0

Votre console ne peut peut-être pas afficher le caractère Ö. Vérifiez la propriété système file.encoding pour voir quel est le codage par défaut de la console.

Si votre console prend en charge UTF-8, vous pouvez essayer de démarrer la machine virtuelle Java avec -Dfile.encoding=utf-8, ou vous pouvez le faire depuis votre application:

System.setOut(new PrintStream(System.out, true, "utf-8")); 

Si la console ne prend pas en charge UTF-8, je suggère essayez d'écrire cela dans un fichier à la place, en utilisant l'encodage UTF-8, puis ouvrez le fichier avec un éditeur de texte qui peut gérer UTF-8.

Si tout cela ne fonctionne pas, c'est probablement un bogue dans StringEscapeUtils.

+0

La console a imprimé 'ö' pour' ö ', donc ce n'était probablement pas le problème. – aioobe

+0

Pourquoi la downvote? – Grodriguez

6

Je suppose que EntityArrays.java depuis le dépôt lang3 est bogué:

{"\u00D6", "Õ"}, // � - uppercase O, tilde 
{"\u00D7", "Ö"}, // � - uppercase O, umlaut 
{"\u00D8", "×"}, // multiplication sign 

Il semble que certaines valeurs sont décalées d'une ligne. Il doit être:

{"\u00D6", "Ö"}, // � - uppercase O, umlaut 
{"\u00D7", "×"}, // multiplication sign 

parce Ö est 00D6 selon la LATIN CAPITAL LETTER O WITH DIAERESIS

et x est "\u00D7"

+0

Ouverture d'un JIRA: https://issues.apache.org/jira/browse/LANG-658 –

+2

+1 pour une précision et une proactivité précises. –