2012-04-07 15 views
1

Ich habe ein Problem mit schwedischen Zeichen (die sich von dem englischen Alphabet unterscheiden) und wie sie in die Datenbank eingefügt werden.Character Problem beim Senden an die Datenbank

Ich benutze osCommerce, iso-8859-1 sind als Zeichensatz in beiden Admin-und den Katalogseiten festgelegt. Und wenn ich SHOW VARIABLES; ausführen, ist character_set in der Datenbank latin1.

Und here einige Servereinstellungen von phpinfo: durch Zugabe von

AddDefaultCharset ISO-8859-1 

in einem

iconv.input_encoding ISO-8859-1 

iconv.internal_encoding ISO-8859-1 

iconv.output_encoding ISO-8859-1 

Nach den Host-Support-Seiten Apache alle Seiten in UTF-8 als Standard liefern, und es kann Änderung sein .htaccess Datei.

Wenn ich zu admin gehe, um das Produkt zu aktualisieren, werden alle Zeichen in den verschiedenen Eingabefeldern aus der Datenbank gefunden und angezeigt, wie sie annehmen. Aber wenn ich das Produkt alle Sonderzeichen aktualisieren werden wie folgt umgerechnet:

  • å wird à ¥
  • ä wird å¤
  • ö wird ö

Das gleiche passiert, wenn ich hinzufügen ein neues Produkt.

Wenn ich in die Datenbank mit phpmyadmin schaue die "korrupten" Zeichen angezeigt werden, so ist es nicht nur die Webseite, die es falsch übersetzen.

Mein Host hat vor kurzem angekündigt, dass sie einige Updates für PHP machen werden, also denke ich, dass es mit diesem Update zu tun hat. Vor ein paar Tagen hat alles gut funktioniert.

Ich bin nicht sicher, ob meine previos PHP-Version, aber jetzt habe ich 5.2.17 und MySQL ist 4.0.27-Standard

Kann mir jemand in dieser Angelegenheit helfen und mir sagen, was ich tun muss, .

Gibt es eine einfache Lösung, muss ich die Datenbank und die Webseite zu utf-8 konvertieren oder muss ich noch etwas anderes tun?

Antwort

1

Es klingt wie der Webbrowser sendet das Formular in UTF-8 anstelle von ISO-8859-1. Entweder das oder die Anwendung (oder der MySQL-Client) konvertiert den Text in UTF-8, bevor er in die Datenbank geschrieben wird. Sie können überprüfen, wie $text codiert wird, indem Sie eine einfache echo bin2hex($text); tun.

Wenn das Problem mit dem Browser auftritt, legen Sie die Zeichencodierung fest, die zum Senden des Formulars mit dem Attribut accept-charset im Formular-Tag verwendet wird. Das ist:

<form action="..." method="POST" accept-charset="ISO-8859-1"> 
    .... 
</form> 
+0

Vielen Dank für Ihre Antwort. Das Problem ist einfach verschwunden, ohne dass jemand etwas getan hat. Also war alles abartig fischig. Aber ich fand Ihre Antwort interessant und ich werde es sicher versuchen, wenn dieses Problem erneut auftritt. –

+0

Ich kann mir vorstellen, dass es schwierig sein kann, das Problem zu reproduzieren, da das Problem stark von Browser-Versionen und Patch-Levels abhängen kann – Joni

Verwandte Themen