Ich möchte auf UTF8 auf unserer Website standardisieren. Alle unsere Datenbanken und Internet-Sachen sind in UTF8. Alle unsere Webserver senden den HTTP-Header charset=utf-8
. Ich habe jedoch entdeckt, dass ich durch die Änderung der Kodierung in meinem Firefox (Ansicht -> Zeichenkodierung) etwas anderes in ein Formular ein Latein-9-Zeichen eingeben kann und PHP behandelt sie einfach als missgebildetes UTF8.Kann ich Webbrowser zwingen, Formulartext als UTF8 zu senden?
Wie viel muss ich mir darüber Gedanken machen? Ist es möglich, dass der Webbrowser des Benutzers den UTF8-Zeichensatzheader überschreibt und nicht-UTF8 sendet?
Update: Mehrere Personen haben accept-charset
auf den einzelnen Formen vorgeschlagen. Ich möchte jedoch nicht jedes Webformular ändern müssen. Angenommen, ich kann den Header des HTTP-Inhaltstyps steuern, und er ist auf UTF8 eingestellt, muss ich mich darum kümmern?
"Alle unsere Datenbanken und Internet-Sachen" - all Ihre Internet-Sachen gehören uns. –
Gemäß der akzeptierten Antwort auf [diese Frage] (http://stackoverflow.com/questions/3719974/is-there-any-benefit-to-adding-accept-charset-utf-8-to-html-forms- if-the-page) löst 'accept-charset' das spezifische Problem, das Sie entdeckt haben: Dh wenn der Benutzer seinen Browser anweist, die Seite als Nicht-UTF-8 zu interpretieren, sollte' accept-charset' den Browser senden Inhalte trotzdem als UTF-8 formatieren.Ob es gegen diese besondere Situation geschützt ist, ist es wert, all Ihren Formen das Attribut hinzuzufügen, nun, das ist Ihr Urteilsspruch. –
stellen Sie sicher, dass Ihre Seite wirklich utf-8 ist; Suchen Sie im Browser-Debugger nach dem gesendeten Content-Type-Header. Bewerten Sie in der JS-Konsole document.charset; sollte eine Schreibweise von utf8 zurückgeben. 'windows-1252' bedeutet möglicherweise, dass der Browser die gesendete Kodierung nicht erkennt. – OsamaBinLogin