Værdier, der er indtastet i browseren, er forvrænget i PHP-programmer
Udgivelsesdato:8. december 2020.
INFOMARTION > Værdier, der er indtastet i browseren, er forvrænget i PHP-programmer
Oversigt.
Der opstod forvrænget tekst, når man gik fra indtastningsskærmen til bekræftelsesskærmen i PHP.
Teksten er forvrænget, når du indtaster tekst i formularen og går til bekræftelsesskærmen.
Der opstår også forvrænget tekst ved overgang til egen skærm på grund af fejl i indtastningskontrollen.
Da serveren lige var blevet bygget, følte jeg, at der manglede noget i PHP-konfigurationen, så jeg vil beskrive, hvad jeg fandt ud af på det tidspunkt.
Indholdsfortegnelse
1. undersøgelse (for at fastslå årsagen til noget)
Følgende oplysninger blev undersøgt for at finde frem til årsagen til problemet.
1-1. undersøgelse
Først skal du kontrollere PHP-indstillingerne (php.ini).
default_charset = "UTF-8"
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = On
Den er som beskrevet ovenfor og ser ud til at være i orden.
Så problemet ser ud til at være forårsaget af PHP-kilden.
PHP-kilden identificerede dog ikke det sandsynlige problem.
Endnu en gang tjekkede jeg php.ini for mistænkelige indstillinger og fandt en mistænkelig indstilling.
mbstring.http_input = auto
Det var uklart, om den var kodet i UTF-8, fordi den var indstillet til auto, så den blev ændret som følger for at afprøve det.
mbstring.http_input = UTF-8
Det er lykkedes at løse forvrænget tekst.
Denne indstilling er nødvendig for mbstring-modulet, når du bruger multibyte-strenge som f.eks. japansk i PHP.
Konfiguration af kodningen af modtagne http-anmodninger.
2. resumé
Hvis der opstår forvrænget tekst, skal du først forsøge at organisere behandlingsflowet.
Og hvis du oplever forvrængede tegn, når du bruger PHP til at gå fra indtastningsskærmen til bekræftelsesskærmen eller andre skærmovergange, skal du mistænke følgende indstillinger i php.ini.
Standardindstillingen er "auto", så tjek dette, når du bruger mbstring til at behandle multibyte-strenge.
Tak, fordi du kiggede med til slutningen.