[PHP & MySQL] Kyrillische Zeichen

-=Renegade=-

Lt. Junior Grade
Registriert
Nov. 2006
Beiträge
430
Hi!

Also, ich möchte meine Seite in mehreren Sprachen anbieten, unter anderem auch russisch. Allerdings ist hier wie immer das Problem der Kodierung.

Die ganzen Seiten werden aus MySQL Datenbanken generiert, also beginnt hier bereits das Problem: Ich hab zwar das Charset der Datenbank und der Tabellen auf UTF8 geändert, allerdings bekomme ich trotzdem die Fehlermeldung Warning: #1366 Incorrect string value: '\xD0\xB4\xD0\xBE\xD0\xB1...' for column 'Content_RU' at row 1 wenn ich kyrillische Zeichen einfüge (und die Ausgabe lautet dementsprechend ????)

Weiters wurde mir geraten, die MySQL Verbindung auf UTF 8 zu setzen (gemacht via mysql_set_charset('utf8') or die ('Charset does not exist');), allerdings werden dann so ziemliche alle anderen Sonderzeichen falsch oder mit mehreren anderen Zeichen angezeigt und die russischen aus der DB gehen (logischerweise, da sie ja nur ???? sind) auch noch immer nicht.

Ich verwende phpmyadmin zur DB Verwaltung und Notepad.exe als Editor.
Testzeichen waren: добро пожаловать (Hoffe sie werden richtig angezeigt)


Würde mich echt freuen, wenn mir jemand eine Anleitung geben könnte, wie ich nun russische (und lateinische) Zeichen in eine DB bringe und wie ich sie dann auch auf Clientseite ausgeben kann.
Das einzige was ich bisher geschafft habe ist die Sprachabhängige xml encoding, die das Copyright Zeichen anders anzeigt (Љ, russisches Copyright?!).

Wäre also sehr dankbar für jede Art der sinnvollen Hilfe.


Vielen Dank im Voraus

so long
Renegade
 
Zuletzt bearbeitet:
Also ich kenn das jetzt nur in der apache/Tomcat/Java/Struts/JDBC/OJB/MySQL Umgebung, aber da helfen vielleicht ein paar Tipps:

Generell wird das (Character)-Encoding verwendet, dass das System als Default hat. z.b. ISO-8859-1.
Somit muss man konsequenz ALLEN beteiligten Technologien sagen dass sie UTF-8 verwenden sollen.
Vorweg, es heisst "UTF-8" nicht "utf 8" oder "utf8" - um da schon mal Problemen vorzubeugen.

Dein HTML Code, sofern du eine Webseite hast, dein Webserver(!) und die MySQL müssen auf UTF-8 gestellt werden.
- Für den HTML-Code gibts die meta-tags. Wichtig für die Daten Ein/Ausgabe.
- Für den Webserver (z.B. Apache) gibt das DefaultEncoding. (htaccess-zugriff sollte reichen) Ansonsten ist die Ausgabe wohl wieder ISO-8859-1(5).
- Für MySQL gibt es einerseits die UTF-8 Verbindung (, bzw JDBC erlaubt auch das setzt von Unicode). Auch die Tabellen-Spalten (ab MySQL 4.1) müssen UTF-8/Unicode sein.

Ich hoffe mal das PHP intern auf UTF-8 bzw Unicode (Double Byte Support) arbeitet, ansonsten wüsste ich auf die Schnelle nicht wie man es ihm beibringt.

Notepad soll zwar UTF-8 und Unicode unterstützten, aber sei mir nicht böse, da würde ich lieber zu besseren Editoren greifen wie Ultraedit/Notepad++/etc oder Eclipse (was ich verwende).
PHPMyAdmin muss auch gesagt werden das es auf UTF-8 arbeiten soll, sonst verwendet es ... ka .. was es gerade als Default hat.

Verwendest du (später) eine Webseite um die Daten einzugeben? Denke, ja?

Gruß
Nox
 
Zuletzt bearbeitet:
Bei PHP muss noch explizit UTF-8 als Codierung angegeben werden, da sonst Standardmäßig ISO-8859-1 benutzt wird:

header('Content-Type: text/html; charset=utf-8');

Bei MySQL heißt es korrekt utf8 - also ohne Bindestrich. Um die Codierung hier umzustellen, musst du das so angeben (als Query):

SET NAMES 'utf8'

Dann müsste es auch gehen ;)
 
TheNoxier schrieb:
- Für den HTML-Code gibts die meta-tags. Wichtig für die Daten Ein/Ausgabe.
Reicht hier auch ein xml encoding zu Beginn der Seite (<?xml version='1.0' encoding='UTF8' ?>) oder sind Meta Tags im Head besser?
- Für den Webserver (z.B. Apache) gibt das DefaultEncoding. (htaccess-zugriff sollte reichen) Ansonsten ist die Ausgabe wohl wieder ISO-8859-1(5).
Apache verwend ich, htaccess Zugriff ist gegeben. Hab jetzt gerade nach der richtigen Syntax gegoogelt und dabei AddDefaultCharset windows-1251 gefunden, um auch russische Seiten anzuzeigen. Ist diese Syntax korrekt? (Quelle)
- Für MySQL gibt es einerseits die UTF-8 Verbindung (, bzw JDBC erlaubt auch das setzt von Unicode). Auch die Tabellen-Spalten (ab MySQL 4.1) müssen UTF-8/Unicode sein.
Hab vie PHPmyAdmin bereits Datenbank wie auch Tabellen auf UTF8 und Collaton utf8_unicode_ci gesetzt (Konnte iwi nur die Collation verändern, dabei wurde allerdings auch das Charset auf utf8 umgestellt. Hoffe das klappt?


Notepad soll zwar UTF-8 und Unicode unterstützten, aber sei mir nicht böse, da würde ich lieber zu besseren Editoren greifen wie Ultraedit/Notepad++/etc oder Eclipse (was ich verwende).
Ich werd mir Eclipse mal anschaun, hab ich auch schon das eine oder andere gute davon gehört ;)


Verwendest du (später) eine Webseite um die Daten einzugeben? Denke, ja?
Natürlich :)
Seite existiert sogar schon, nur die Ausgabe nicht so wirklich :D


Danke schonmal für die Antworten :)


so long
Renegade
 
Meta sollte ausreichen. :)
AddDefaultCharset - genau und wie schon erwähnt verwende generell UTF-8 und fang erst gar nicht an zu mischen. Wenn du (noch) keine Ahnung hast, wird das nur schwerer.

Collation ist schon mal gut.
Jede Spalte sie mit Character arbeitet, z.B. Varchar und Text haben jeweils noch Encoding angaben.


Wenn die Seite schon existiert, würde ich auch die Seite verwenden, anstatt Notepad. Firefox/IE machen das recht mit dem Encoding Zeug :)



Und stimmt, bei MySQL war da noch der SET NAMES 'utf8' spass :)
 

Ähnliche Themen

Zurück
Oben