La lecture des chaînes UTF8 à partir d'un serveur via HTTP à l'aide MIDP
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.
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");