Verkeerde formuliertekens in PHP herstellen met UTF-8 en mbstring


Datum van publicatie:

Bijgewerkt:


Artikelen > Verkeerde formuliertekens in PHP herstellen met UTF-8 en mbstring

2026 status en veilig gebruik

Conclusie: Houd één expliciete codering UTF-8 Neem de ruwe invoer op en identificeer de grens waar bytes verkeerd worden gedecodeerd voordat de globale instellingen worden gewijzigd.

Wat je zult leren

  • Hoe onderscheid je een display probleem van input conversie of database corruptie.
  • Welke headers en PHP-instellingen relevant zijn voor moderne UTF-8 toepassingen.
  • Waarom de erfenis mbstring.internal_encoding en mbstring.http_input recept hieronder mag niet worden gekopieerd naar een huidige implementatie.

Voor wie: PHP-onderhouders probleemoplossing mojibake na vormvalidatie, redirects, of database ronde trips.

Actualisatie voor 2026: PHP depreceerde de oude pictogram/mbstring codering richtlijnen in PHP 5.6 ten gunste van default_charset; moderne code moet coderen expliciet aan elke grens. De oorspronkelijke configuratie wordt alleen behouden om het historische incident te verklaren.

Veiligheidsopmerking: de opdrachten en configuratievoorbeelden uit het oorspronkelijke artikel zijn niet opnieuw in een moderne productieomgeving uitgevoerd. Controleer ondersteunde versies, back-ups, toegangsbeheer en terugrolstappen eerst in een afzonderlijke testomgeving.

Officiële primaire bronnen

Overzicht

Er verscheen vervormde tekst bij het overgaan van het invoerscherm naar het bevestigingsscherm in PHP.

Tekst wordt vervormd wanneer tekst in het formulier wordt ingevoerd en naar het bevestigingsscherm wordt gegaan.

Vervormde tekst komt ook voor bij de overgang naar het eigen scherm als gevolg van fouten bij de invoercontrole.

Aangezien de server net gebouwd was, had ik het gevoel dat er iets ontbrak in de PHP configuratie, dus ik zal beschrijven wat ik toen ontdekte.


Inhoudsopgave

  1. onderzoek (om de oorzaak van iets te achterhalen)
  2. samenvatting

1. onderzoek (om de oorzaak van iets te achterhalen)

De volgende informatie werd onderzocht om de oorzaak van het probleem te achterhalen.

1-1. enquête

Controleer eerst de PHP instellingen (php.ini).

php.ini


default_charset = "UTF-8"
mbstring.internal_encoding = UTF-8
mbstring.encoding_translation = On

Het is zoals hierboven beschreven en lijkt in orde te zijn.

Dan lijkt het probleem te worden veroorzaakt door de PHP bron.

De PHP-bron gaf echter niet aan wat het waarschijnlijke probleem was.

Nogmaals, ik controleerde de php.ini voor verdachte instellingen en vond één verdachte instelling.

php.ini


mbstring.http_input = auto

Het was onduidelijk of het in UTF-8 gecodeerd was omdat het op auto stond, dus werd het als volgt gewijzigd om het uit te proberen.

php.ini


mbstring.http_input = UTF-8

Succesvol opgelost verminkte tekst.

Deze instelling is nodig voor de mbstring module bij het gebruik van multibyte strings zoals het Japans in PHP.

Configuratie van de encoding van ontvangen http verzoeken.

2. samenvatting

Als de tekst verminkt is, probeer dan eerst de verwerkingsstroom te organiseren.

En als u last hebt van vervormde tekens wanneer u PHP gebruikt om over te schakelen van het invoerscherm naar het bevestigingsscherm of andere schermovergangen, verdenk dan de volgende instellingen in php.ini.

De standaardinstelling is 'auto', dus controleer dit als je mbstring gebruikt om multibyte strings te verwerken.

■INFORMATION

Artikelen


■PROFILE

Profiel


■Contact

Contact