2010-06-23 4 views
0

HI! J'ai un contenu de page Web codé en ISO-8859-2. Comment convertir un flux codé dans ce jeu de caractères en UTF-8 de Java. J'essaie le code ci-dessous, mais ça ne marche pas. Cela chamboule certains personnages. Y a-t-il un autre moyen de le faire?comment régler le codage de caractères chaîne dans android

BufferedInputStream inp = new BufferedInputStream(in); 
    byte[] buffer = new byte[8192]; 
    int len1 = 0; 
    try{ 
     while ((len1 = inp.read(buffer)) != -1) 
     { 

      String buff = new String(buffer,0,len1,"ISO-8859-2"); 
      stranica.append(buff); 
     } 
+0

Vous devriez ré-étiqueter ce "Java" pas "Android" – mtmurdock

Répondre

4

Essayez avec un InputStreamReader et charset:

InputStreamReader inp = new InputStreamReader(in, Charset.forName("ISO-8859-2")); 
BufferedReader rd = new BufferedReader(inp); 
String l; 
while ((l = rd.readLine()) != null) { 
    ... 
} 

Si vous obtenez un UnsupportedCharsetException, vous savez quel est votre problème ... En outre, avec inp.getEncoding() vous pouvez vérifier quel codage est vraiment utilisé.

+0

merci, je vais essayer cela plus tard aujourd'hui ... – Levara

+0

il semble que le problème était que le paramètre d'encodage devrait être "ISO8859-2" et non " ISO-8859-2 "... – Levara

+0

Je doute que. 'ISO-8859-2' et' ISO8859-2' sont tous deux des noms valides pour cet encodage, et Java les reconnaît tous les deux. –

3

Comment convertir un flux codé en ce charset au UTF-8

hypothèse erronée de Java: Java utilise UTF-16 en interne, non UTF-8. Mais votre code semble correct et devrait fonctionner. Êtes-vous absolument sûr que la page Web est en fait encodée en ISO-8859-2? Peut-être que son encodage est déclaré incorrectement.

Ou peut-être le vrai problème n'est pas avec le code de lecture que vous avez montré, mais avec le code que vous utilisez pour travailler avec le résultat. Comment et où ces "personnages foirés" se manifestent-ils?

+0

je sais cela à propos de utf-16, mais, quand une page web a dans sa tête (ou peu importe comment) utf-8 déclaré, tout fonctionne parfaitement. lorsque la norme ISO-8859-2 est déclarée, certains caractères croates tels que (, ć, š, ć, đ, ž) finissent par s'afficher sous la forme?. – Levara

+0

@Levara: Ces pages Web sont-elles correctes lorsque vous les ouvrez dans un navigateur? Si cela affiche '?' aussi, il semble que le contenu de la page Web ait été corrompu par le programme produit. Rien de ce que vous faites à ce stade ne peut résoudre ce problème. –

+0

Oui. ils sont correctement affichés dans le navigateur. C'est pourquoi je suis sûr que c'est possible, je ne sais pas comment le faire. :) – Levara