Der chinesische verstümmelte Code ist ein häufiges Problem, wenn Android -Anwendungen mit PHP -Backend -Datenbanken interagieren. In diesem Artikel wird eine Vielzahl von praktischen Methoden eingeführt, mit denen Entwickler chinesische verstümmelte Code vermeiden und lösen und die Richtigkeit der Datenübertragung sicherstellen können.
Wenn die PHP-Seite Daten aus der Datenbank erhält, werden die Daten normalerweise in das UTF-8-Format codiert. Daher ist es am wichtigsten, sicherzustellen, dass der Zeichensatz der Datenbank und Datentabellen auf UTF8 oder UTF8MB4 festgelegt ist.
Fügen Sie die folgende Konfiguration in die MySQL -Konfigurationsdatei my.cnf hinzu:
[Mysqld] Charakter-set-server = utf8 collation-server = utf8_general_ci
Starten Sie den MySQL -Service nach der Änderung neu. Überprüfen Sie die Charakter -Set -Einstellungen, indem Sie den folgenden SQL -Befehl ausführen:
Zeigen Sie Variablen wie '%Charakter%';
Wenn das im zurückgegebene Ergebnis festgelegte Zeichen UTF8 oder UTF8MB4 ist, ist die Konfiguration erfolgreich.
Nach einer Verbindung zur Datenbank wird empfohlen, den Zeichensatz explizit auf UTF8 im PHP -Code festzulegen, um sicherzustellen, dass der Dateninteraktionscode konsistent ist:
<?php $conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname); mysqli_set_charset($conn, "utf8"); ?>
Beim Senden von HTTP-Anforderungen auf der Android-Seite müssen Sie auch die Zeichenkodierung als UTF-8 angeben, um verstümmelten Code bei Anforderungen und Antworten zu verhindern.
versuchen { URL URL = New URL ("http://www.example.com"); HttpurlConnection connection = (httpurlConnection) url.openconnection (); Connection.SetRequestMethod ("get"); Connection.SetRequestProperty ("Accept-charset", "UTF-8"); InputStream respectInputStream = connection.getInputStream (); } catch (ioException e) { E. printstacktrace (); }
versuchen { Defaulthttpclient httpclient = new Defaulthttpclient (); Httpget httpget = new httpget ("http://www.example.com"); httpget.setheader ("Accept-charset", "utf-8"); Httpresponse response = httpclient.execute (httpget); Httpentity entity = response.getEntity (); InputStream inputStream = entity.getContent (); } catch (ioException e) { E. printstacktrace (); }
Eine weitere häufige Lösung besteht darin, dass sie chinesische Inhalte codieren, um während der Übertragung einen verstümmelten Code zu vermeiden. In Android können Sie java.net.urlencoder verwenden:
String str = "Chinesische String"; String codedStr = urlencoder.encode (str, "utf-8");
Verwenden Sie nach Empfangen auf der PHP -Seite die Urldecode -Funktion, um zu dekodieren:
$ str = "url%20%E7%BC%96%E7%A0%81"; $ decodedStr = urldecode ($ str);
Indem das MySQL -Datenbank -Zeichensatz, der PHP -Verbindungscharaktersatz und die Anforderung der Anforderungscodierung des Android -Clients explizit festgelegt wird, kann das Problem der chinesischen Verwicklungs -Chinesen effektiv vermieden werden. Darüber hinaus ist die URL -Codierung auf Chinesisch auch eine praktische Hilfsmethode. Während des Entwicklungsprozesses werden die oben genannten Lösungen entsprechend den tatsächlichen Bedürfnissen flexibel übernommen, was die Genauigkeit und Stabilität der Datenübertragung sicherstellen kann.