Question

Je veux lire UTF-8 chaînes à partir d'un serveur que je contrôle, en utilisant Java MIDP. Mon serveur envoie des données UTF-8. Le code suivant se rapproche:

        c = (StreamConnection) Connector.open(
             myServer, Connector.READ_WRITE);
        InputStream is = c.openInputStream();
        StringBuffer sb = new StringBuffer();
        int ch;
        while((ch = is.read()) != -1)
            sb.append((char)ch + "->" + ch + "\n");

imprimer l'omble chevalier et son code à des fins de débogage. Je pense qu'il est en train de lire les caractères ASCII ici, donc, quand j'ai un peu omble chevalier qui a son code ci-dessus 127 puis-je obtenir deux caractères, comme les deux exemples ci-dessous:

lettre á. code UTF E1 (hex). Je reçois 195 et 161

lettre O. code UTF F4 (hex). Je reçois 195 puis 180

Ma question est, est-il un moyen pour moi de lire les caractères UTF directement. J'ai trouvé des solutions dans le Web, mais aucune ne correspond à la MIDP.

Était-ce utile?

La solution

Au lieu de lire des octets, lire les caractères. Utilisez un API InputStreamReader pour convertir les octets aux caractères et exécuter par l'encodeur UTF-8. Il doit être pris en charge dans le cadre du profil JavaME CLDC (JSR 30); c'est où les points de lien.

Essayez quelque chose comme ceci:

c = (StreamConnection) Connector.open(
         myServer, Connector.READ_WRITE);
Reader r = new InputStreamReader(c.openInputStream(), "UTF-8");
StringBuffer sb = new StringBuffer();
int ch;
while((ch = r.read()) != -1)
    sb.append((char)ch + "->" + ch + "\n");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top