Le code brouillé chinois est un problème courant lorsque les applications Android interagissent avec les bases de données backend PHP. Cet article introduira une variété de méthodes pratiques pour aider les développeurs à éviter et à résoudre le code brouillé chinois et à garantir l'exactitude de la transmission des données.
Lorsque le côté PHP obtient des données de la base de données, les données sont généralement codées au format UTF-8. Par conséquent, il est le plus important de s'assurer que le jeu de caractères de la base de données et des tables de données est défini sur UTF8 ou UTF8MB4.
Ajoutez la configuration suivante dans le fichier de configuration MySQL My.cnf :
[mysqld] personnage-set-server = utf8 collation-server = utf8_general_ci
Redémarrez le service MySQL après modification. Vérifiez les paramètres du jeu de caractères en exécutant la commande SQL suivante:
Montrer des variables comme «% de caractère%»;
Si le caractère de caractère dans le résultat renvoyé est UTF8 ou UTF8MB4, la configuration est réussie.
Après se connecter à la base de données, il est recommandé de définir explicitement le jeu de caractères sur UTF8 dans le code PHP pour s'assurer que le code d'interaction des données est cohérent:
<?php $conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); mysqli_set_charset($conn, "utf8"); ?>
Lors de l'envoi de demandes HTTP du côté Android, vous devez également spécifier le codage des caractères en tant que UTF-8 pour empêcher le code brouillé pendant les demandes et les réponses.
essayer { Url url = new URL ("http://www.example.com"); HttpurlConnection Connection = (httpurlConnection) url.openconnection (); connection.setRequestMethod ("get"); connection.setRequestProperty ("accepter-charset", "utf-8"); InputStream ResponseInputStream = Connection.getInputStream (); } catch (ioexception e) { e.printStackTrace (); }
essayer { DefaulthTTPClient httpClient = new DefaulthTTPClient (); Httpget httpget = new httpget ("http://www.example.com"); httpget.sethEader ("accepter-charset", "utf-8"); HttpResponse Response = httpClient.Execute (httpget); Httpentity Entity = Response.getEntity (); InputStream inputStream = entity.getContent (); } catch (ioexception e) { e.printStackTrace (); }
Une autre solution courante consiste à encoder URL du contenu chinois pour éviter le code brouillé pendant la transmission. Dans Android, vous pouvez utiliser java.net.urlencoder :
String str = "chaîne chinoise"; String EncodedStr = urLencoder.encode (str, "utf-8");
Après avoir reçu du côté PHP, utilisez la fonction UrLDEcode pour décoder:
$ str = "URL% 20% E7% BC% 96% E7% A0% 81"; $ decodedStr = urlDECODE ($ str);
En définissant raisonnablement le jeu de caractères de la base de données MySQL, le jeu de caractères de connexion PHP et en spécifiant explicitement le codage de demande sur le client Android, le problème des chinois brouillés peut être évité efficacement. De plus, le codage d'URL en chinois est également une méthode auxiliaire pratique. Au cours du processus de développement, les solutions ci-dessus sont adoptées de manière flexible en fonction des besoins réels, ce qui peut garantir la précision et la stabilité de la transmission des données.