Chrome Formular-POST zeigt "(decodieren Wert)" und die Datenbank speichert es als ein Fragezeichen
Habe ich eine test-Website und die test-DB " festgelegt windows-1252
. Wenn ich geben Sie Alt+234 in Chrome wird diese symbol in das Feld: Ω
. Und wenn ich das Formular senden Sie Beiträge und speichert es als Ω
ich ' m vorausgesetzt, dies ist dem browser zu sagen "hey, das ist nicht in den angegebenen Zeichensatz, aber ich weiß von einer html-äquivalent, also poste ich, dass statt". Fein. Das symbol korrekt angezeigt wird nach dem speichern kann ich speichern, speichern, speichern unter, und Sie wird immer feiner. Aber wenn ich versuche, die gleiche Sache mit Alt+230 der browser nicht vorlegen, es ist html-entity-Wert von µ
. Stattdessen sehe ich "(decodieren Wert)" bei der Durchsicht der POST im Chrome DevTool Fenster. Und es endet als die in der Datenbank gespeichert wie ein Fragezeichen.
Warum muss es behandeln Alt+234 (Ω
) anders als Alt+230 (µ
)?
Ich weiß, ich sollte Umschalten auf UTF8 aber ich würde noch gerne wissen, warum es funktioniert auf diese Weise. Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
U+03A9
Ω
griechischen Großbuchstaben omega ist nicht Teil der Die Windows-Codepage 1252.U+00B5
µ
Mikro-Zeichen (das ist nicht die exakt gleichen Charakter wie die Griechische mu) ist Teil von 1252 (byte-181).Alt+Tastatur-shortcut zahlen nicht ausgerichtet mit Codepage 1252, oder die aktuelle ANSI-Codepage im Allgemeinen, so in der Lage, geben Sie ein Zeichen aus, dass die Verknüpfung bedeutet nicht, die Mitgliedschaft dieser code-Seiten. Stattdessen werden Sie von Die DOS-code-Seite 437.
Ja, dies ist eine langjährige komisch, nicht behebbarer, mangeln, dass HTML5 endlich standardisiert, für wenn ein Zeichen nicht codierbaren in der Codierung der Seite angefordert hat.
Den browser zu senden, dass Zeichen, die als code-Seite 1252-byte-181. Die devtools und was auch immer Ihre Anwendung ist nicht erwartet zu werden, den Umgang mit der code-Seite 1252 bytes... wahrscheinlich sind Sie erwartet UTF-8. Da byte-181 auf seine eigene ist nicht eine gültige UTF-8-Sequenz, die Sie nicht halten können es.
µ
ist Teil von windows-1252. Weil es nicht richtig gespeichert und ich vermutete, war es nicht. Aber ich habe entdeckt, dass einige form-posts in meine app Einreichen und speichern in der DB korrekt alsµ
. Aber einige posts ändern, um einen GroßbuchstabenM
direkt vor der update-Anweisung, dann nach dem update scheint es als?
in der DB. So muss es sein, einige der ColdFusion-code, dies zu tun. Wir haben ein customtag, um alle updates, es basiert off <cfupdate>. Nur code, der aufgerufen wird, hat dieses Verhalten. Ich werde dort zu suchen.Mit
encodeURIcomponent
auf die variable gesendet, das problem behoben.Gebrochen:
Arbeiten: