


Wie löst PHP verstümmelte chinesische Zeichen beim Abfragen einer MySQL-Datenbank?
Wie löst PHP verstümmelte chinesische Zeichen bei der Abfrage einer MySQL-Datenbank?
1. Die Standardkodierung der MySQL-Datenbank ist UTF-8;
3. Stellen Sie vor der Datenabfrage in PHP die Datenbankkodierung auf UTF-8 ein.
MySQL „SET NAMES x“-Zeichensatzproblemanalyse
Kürzlich von BBT geschult, um ein Abstimmungssystem aufzubauen. Der Systemcode ist nicht schwierig, aber ich habe meine Zeit hauptsächlich damit verbracht, Zeichensätze und Kodierungen zu studieren. Die Kodierungsprobleme (Zeichensatzprobleme) der beiden Systeme MySQL und Apache haben mir den Kopf zerbrochen und sehr gelitten. Die Lösungen für diese Probleme im Internet sind verstreut und einseitig. Die meisten von ihnen bieten Lösungen, ohne zu erklären, warum. Deshalb werde ich zusammenfassen, was ich in den letzten Tagen gewonnen habe, um zu vermeiden, dass Nachzügler weitere Umwege machen. Dieser Artikel ist ein wenig hilfreich für das PHP-Schreiben (nachdem Sie ihn gelesen haben, wissen Sie, wie Sie dafür sorgen, dass Ihr PHP-Programm auf den Servern der meisten Space-Anbieter normal angezeigt wird), aber mehr Hilfe liegt in der Einrichtung und den Einstellungen des Netzwerkservers.
Lassen Sie uns zunächst über den Zeichensatz von MySQL sprechen. Unter Windows können Sie den Standardzeichensatz der Datenbank ändern, indem Sie die beiden Felder# CLIENT SECTION [mysql] default-character-set=utf8 # SERVER SECTION [mysqld] default-character-set=utf8in my.ini ändern. Der erste ist der Standardzeichensatz des Clients und der zweite ist der Standardzeichensatz des Servers. Angenommen, wir setzen beide auf utf8 und geben dann „show variebles like „character_set_%“;“ in den MySQL-Befehlszeilenclient ein. Sie können die folgenden Zeichen sehen:
character_set_client latin1 character_set_connection latin1 character_set_database utf8 character_set_results latin1 character_set_server utf8 character_set_system utf8Das utf8 folgt unserer obigen Einstellung. Wenn wir derzeit Daten aus der Datenbank über ein PHP-Programm mit UTF-8 lesen, handelt es sich wahrscheinlich um eine Zeichenfolge mit „?????“ oder anderen verstümmelten Zeichen. Nach einer langen Online-Suche ist die Lösung einfach. Nachdem Sie eine Verbindung zur Datenbank hergestellt haben, führen Sie vor dem Lesen der Daten zunächst eine Abfrage „SET NAMES UTF8“ aus, d normal sein (solange die Datenbank die Zeichen in den Informationen normal sind). Warum passiert das? Was genau macht die Abfrage „SET NAMES UTF8“? Gehen Sie zur MySQL-Befehlszeile und geben Sie „SET NAMES UTF8;“ ein, führen Sie dann „show variebles like „character_set_%“;“ aus und stellen Sie fest, dass die Variablen „character_set_client“, „character_set_connection“ und „character_set_results“ vorhanden sind waren ursprünglich latin1 Alle Werte wurden in utf8 geändert. Es stellt sich heraus, dass diese drei Variablen Probleme verursachen. Konsultieren Sie das Handbuch, der obige Satz entspricht:
mysql_query("SET NAMES UTF8");Sehen Sie sich die Funktionen dieser drei Variablen an: Informationseingabepfad: Client→Verbindung→Server Informationen Ausgabepfad: Server→Verbindung→Ergebnisse. Mit anderen Worten, jeder Pfad muss die Zeichensatzkodierung dreimal ändern. Nehmen Sie als Beispiel die verstümmelte Ausgabe. Für die utf8-Daten auf dem Server wird die eingehende Verbindung in latin1 konvertiert, die eingehenden Ergebnisse werden in latin1 konvertiert und die utf-8-Seite konvertiert die Ergebnisse erneut. Wenn die beiden Zeichensätze nicht kompatibel sind, z. B. latin1 und utf8, ist der Konvertierungsprozess irreversibel und destruktiv. Es kann also nicht mehr zurückgedreht werden. An dieser Stelle sollte jedoch darauf hingewiesen werden, dass die Wirkung von „SET NAMES UTF8“ nur vorübergehend ist und MySQL nach dem Neustart auf die Standardeinstellungen zurückgesetzt wird. Der nächste Schritt besteht darin, über die Konfiguration von MySQL auf dem Server zu sprechen. Müssen wir nicht jedes Mal, wenn wir in die Datenbank lesen und schreiben, „SET NAMES UTF8“ hinzufügen, um sicherzustellen, dass die Codierung der Datenübertragung konsistent ist? Kann ich MySQL so konfigurieren, dass die drei Variablen standardmäßig den gewünschten Zeichensatz verwenden? Im Handbuch steht es nicht, und ich konnte die Antwort online nicht finden. Daher gibt es aus Sicht der Serverkonfiguration keine Möglichkeit, diese Codezeile wegzulassen. Empfohlene Tutorials: „
PHP
“ „MySQL-Tutorial
“Das obige ist der detaillierte Inhalt vonWie löst PHP verstümmelte chinesische Zeichen beim Abfragen einer MySQL-Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PhpisstillrelevantinMoDernEnterpriseEnvironments.1.ModerPhp (7.xand8.x) Angebote, strenge, jitkompilation und moderne Syntax, machte maßgeschneiderte Foreiglableforlarge-ScaleApplikationen

Vermeiden Sie N 1 Abfrageprobleme, reduzieren Sie die Anzahl der Datenbankabfragen, indem Sie die zugehörigen Daten im Voraus laden. 2. Wählen Sie nur die erforderlichen Felder aus, um das Laden vollständiger Entitäten zu vermeiden, um Speicher und Bandbreite zu sparen. 3.. Verwenden Sie Cache-Strategien vernünftigerweise, z. 4. Optimieren Sie den Lebenszyklus der Entität und rufen Sie Clear () regelmäßig an, um den Speicher freizugeben, um den Speicherüberlauf zu verhindern. 5. Stellen Sie sicher, dass der Datenbankindex die generierten SQL -Anweisungen existiert und analysiert, um ineffiziente Abfragen zu vermeiden. 6. Deaktivieren Sie die automatische Änderungsverfolgung in Szenarien, in denen Änderungen nicht erforderlich sind, und verwenden Sie Arrays oder Leichtgewichtsmodi, um die Leistung zu verbessern. Die korrekte Verwendung von ORM erfordert die Kombination der SQL -Überwachung, -gespeicherung, der Stapelverarbeitung und der geeigneten Optimierung, um die Anwendungsleistung zu gewährleisten und gleichzeitig die Entwicklungseffizienz beizubehalten.

Um einen flexiblen PHP -Microservice zu erstellen, müssen Sie Rabbitmq verwenden, um eine asynchrone Kommunikation zu erreichen. 1. Decken Sie den Dienst über Nachrichtenwarteschlangen ab, um Kaskadenfehler zu vermeiden. 2. Konfigurieren Sie persistente Warteschlangen, anhaltende Nachrichten, Freigabebestätigung und manuelles ACK, um die Zuverlässigkeit zu gewährleisten. 3.. Verwenden Sie exponentielle Backoff -Wiederholung, TTL und Dead Letter -Warteschlangenverarbeitungsfehler; 4. Verwenden Sie Tools wie Supervisford, um Verbraucherprozesse zu schützen und Herzschlagmechanismen zu ermöglichen, um die Gesundheit der Service zu gewährleisten. und letztendlich die Fähigkeit des Systems erkennen, kontinuierlich in Fehlern zu arbeiten.

Verwenden Sie Subprozess.run (), um die Befehle von Shell sicher auszuführen und die Ausgabe zu erfassen. Es wird empfohlen, Parameter in Listen zu übergeben, um Einspritzrisiken zu vermeiden. 2. Wenn die Shell -Eigenschaften erforderlich sind, können Sie Shell = True einstellen, aber achten Sie auf die Befehlsinjektion. 3. verwenden subprocess.popen, um die Echtzeit-Ausgangsverarbeitung zu realisieren. 4. Setzen Sie check = true, um Ausnahmen zu werfen, wenn der Befehl fehlschlägt. 5. Sie können direkt Ketten anrufen, um die Ausgabe in einem einfachen Szenario zu erhalten. Sie sollten Subprozess vorrangig machen. Die obigen Methoden überschreiben die Kernverwendung der Ausführung von Shell -Befehlen in Python.

ReadOmpropertiesinphp8.2canonlyBeSignedoncinstructororatDeklarationandCannotBemodifiedAfterward, durchsetzungsvermutbarkeitatheluagelevel.2.ToachedevimmiMmutability, WrapMutabletypesLikearrayObjecustomimmutablecollections

Die Datei "Settings.JSON" befindet sich auf dem Pfad auf Benutzerebene oder Arbeitsbereichsebene und wird verwendet, um die VSCODE-Einstellungen anzupassen. 1. Benutzer-Level-Pfad: Windows ist C: \ Benutzer \\ AppData \ Roaming \ Code \ User \ Settings.json, MacOS is /users//library/applicationsupport/code/user/settings.json, Linux is /home/.config/code/usser/setings.json; 2. Pfad auf Arbeitsbereichsebene: .VSCODE/Einstellungen im Projekt Root Directory

Die Verwendung des richtigen PHP-Basisbildes und die Konfiguration einer sicheren, leistungsoptimierten Docker-Umgebung ist der Schlüssel zum Erreichen der Produktion. 1. Wählen Sie PHP: 8,3-FPM-Alpine als Grundbild, um die Angriffsfläche zu reduzieren und die Leistung zu verbessern. 2. Deaktivieren Sie gefährliche Funktionen über benutzerdefinierte Php.ini, deaktivieren Sie die Fehleranzeige und aktivieren Sie Opcache und JIT, um die Sicherheit und Leistung zu verbessern. 3.. Verwenden Sie Nginx als Reverse Proxy, um den Zugriff auf sensible Dateien einzuschränken und die PHP-Anforderungen korrekt an PHP-FPM weiterzuleiten. 4. Verwenden Sie mehrstufige Optimierungsbilder, um Entwicklungsabhängigkeiten zu entfernen, und richten Sie nicht Root-Benutzer auf, um Container auszuführen. 5. optionaler Aufsichtsbehörde zum Verwalten mehrerer Prozesse wie Cron; 6. Überprüfen

Mit Bref ermöglicht es PHP-Entwicklern, skalierbare, kostengünstige Anwendungen zu erstellen, ohne Server zu verwalten. 1.Bref bringt Php nach AWSLambda, indem er eine optimierte PHP -Laufzeitschicht bereitstellt, Php8.3 und andere Versionen unterstützt und sich nahtlos in Frameworks wie Laravel und Symfony integriert. 2.. 3. Führen Sie den Befehl ServerlessDeploy aus, um die Bereitstellung abzuschließen, apiCateway automatisch zu konfigurieren und Zugriffs -URLs zu generieren. 4. Für Lambda -Beschränkungen bietet BREF Lösungen.
