Russischer Zeichensatz konvertieren mit PHP
Andreas Breitschopp
- php
0 AB0 Andreas Breitschopp0 AB0 Jan
Hallo zusammen!
Vielleicht kann mir jemand von euch helfen:
Wie funktioniert die Konvertierung mit PHP von z. B. russischen Zeichen so, damait diese in einer MySQL Datenbank gespeichert werden können?
Das, was dabei rauskommt (was schließlich dann in der MySQL-Datenbank steht), sollte dann soetwas in der Art sein: "выа"
Das dies mit PHP möglich sein muss, sieht man am Beispiel von phpMyAdmin, das diese Konvertierung unterstützt. Ich habe mir auch dessen Quellcode mal angesehen, bin aber leider nicht so fit in PHP, dass ich da durchblicken würde.
Ich hoffe, es kann mir jemand von euch helfen!
Grüße und bereits vielen Dank im Voraus
Andreas
Moin!
convert_cyr_string
(PHP 3>= 3.0.6, PHP 4 )
convert_cyr_string -- Setzt Strings von einem
kyrillischen Zeichensatz in einen anderen um
Beschreibung:
string convert_cyr_string ( string str, string from,
string to)
Diese Funktion konvertiert den angegebenen String von
einem kyrillischen Zeichensatz in einen anderen. Die
Argumente from und to sind einzelne Zeichen die den
Ausgangs- und Zielzeichensatz definieren. Die
unterstützten Zeichensätze sind: (usw usw)
http://www.php.net/manual/de/function.convert-cyr-string.php
Hallo!
Zunächst einmal vielen Dank für deine schnell Antwort!
Nur leider ist mir immer noch nicht klar, wie ich mit dieser Funktion die UNICODE-Nummer bekomme, so dass ich die russischen Zeichen korrekt in einer MySQL-Datenbank speichern kann.
Konkret habe ich z. B. folgende russische Zeichenfolge:
" . "
(Hoffe, du kannst das jetzt richtig sehen; es sind jedenfalls russische Zeichen... ;-) )
Nach der Konvertierung müsste die selbe Zeichenfolge dann so aussehen: "отвратительномсайте. Не стоит слать"
Mit welcher Funktion bzw. Einstellungen kann ich das so mit PHP umwandeln?
Grüße und nochmals vielen Dank
Andreas
Also die Zeichen werden bei mir nicht korrekt angezeigt, nur so am Rande. Aber das da drunter sind
doch Sonderzeichenumschreibungen wie z.B. ä für ä.
Solche werden z.B. mit der Funktion htmlentities() erzeugt.
Hatte den Sitz des Problems wohl etwas verfehlt.
Wenns noch Probleme gibt, einfach noch mal posten.
Hallo!
Also die Zeichen werden bei mir nicht korrekt angezeigt, nur so am Rande.
Ja, ich auch nicht: Das Forum hier scheint die russischen Zeichen wohl auch nicht zu mögen... ;-)
Aber das da drunter sind
doch Sonderzeichenumschreibungen wie z.B. ä für ä.
Solche werden z.B. mit der Funktion htmlentities() erzeugt.
Hatte den Sitz des Problems wohl etwas verfehlt.Wenns noch Probleme gibt, einfach noch mal posten.
Leider kenn die Funktion "htmlentities()" wohl auch keine russischen Zeichen, da hier das Ergebnis ein NULL-String ist...
Ich weiß nicht, nutzt du auch phpMyAdmin?
Dann findest du im Verzeichnis "libraries" eine Datei Namens "charset_conversion.lib.php" (könnte sie dir auch mal per Mail schicken). Vielleicht verstehst du wie die das hinbekommen haben!?
Nochmals vielen, vielen Dank für deine Hilfe!
Grüße
Andreas
Es gibt zu jeder Sprache eine PHP-Datei, die
Wahrscheinlich mit include() einbezogen wird, die
Variablendeklarationen enthält.
Diese werden dann mittels sprintf(); ausgegeben.
dazu auch http://www.php.net/manual/de/function.sprintf.php
Wozu dient denn diese Umwandlung? Ich meine: Soll ein
Eintrag des Benutzers (wie in einem Guestbook oder
Forum) in der Datenbank gespeichert werden oder soll
es einfach nur eine kyrillische Version der Seite
geben?
Hallo!
Es gibt zu jeder Sprache eine PHP-Datei, die
Wahrscheinlich mit include() einbezogen wird, die
Variablendeklarationen enthält.
Diese werden dann mittels sprintf(); ausgegeben.
Das hatte ich auch gedacht, dass es einfach eine Include-Datei in phpMyAdmin gibt, welche für jedes russisches Zeichen eben so eine UNICODE-Zahl beinhaltet. Dem ist aber irgendwie auch nicht so: Es gibt zwar eine Sprachdatei für russisch. Hier sind jedoch lediglich dir Phrasen für die Benutzerführung von phpMyAdmin auf russisch gespeichert, aber damit wird nicht die Umwandlung der Zeichen gemacht...
dazu auch http://www.php.net/manual/de/function.sprintf.php
Wozu dient denn diese Umwandlung? Ich meine: Soll ein
Eintrag des Benutzers (wie in einem Guestbook oder
Forum) in der Datenbank gespeichert werden oder soll
es einfach nur eine kyrillische Version der Seite
geben?
Genau.
Ich betreue ein auf PHP und MySQL basierendes Software-Archiv (AB-Archive.com), welches bis jetzt in englisch, deutsch und dänisch zur Verfügung steht. Dank der netten Hilfe eines russischen Software-Autors wird es bald auch in russisch zur Verfügung stehen. Hierzu ist es jedoch erforderlich, dass z. B. die gesamten Programmbeschreibungen in russisch in der MySQL-Datenbank gespeichert wird. Versucht man einfach nur die russischen Zeichen einzufügen, kommt nur Müll raus. Daher benötige ich die Umwandlung die die UNICODES, welche phpMyAdmin unterstützt und ich einfach nicht verstehe wie das funktionieren soll... ;-)
Andreas
Also ist es bloß eine einmalige Konvertierung.
Das macht das einfacher: mein Html-Editor wandelt zum
Bespiel sämtliche unbekannte Zeichen in Entities um.
Den gibts allerdings nicht kostenlos, so viele
Editoren kenne ich auch nicht, aber es gibt bestimmt
auch freeware-editoren, die das unterstützen.
Wenn das mit htmlentites() nicht klappt, weiß ich in
PHP so direkt auch nichts.
Andere Lösung, die aber etwas umständlich ist:
Den Text in Microsoft Word einfügen und "Als Website
speichern" wählen. (Geht glaube ich erst ab Word 2000)
Dort im Quelltext stehen dann die gewohnten HTML
Entities, die man dann ins richtige PHP-Dokument
einfügen kann.
Hallo Andreas,
Ich betreue ein auf PHP und MySQL basierendes Software-Archiv (AB-Archive.com), welches bis jetzt in englisch, deutsch und dänisch zur Verfügung steht. Dank der netten Hilfe eines russischen Software-Autors wird es bald auch in russisch zur Verfügung stehen. Hierzu ist es jedoch erforderlich, dass z. B. die gesamten Programmbeschreibungen in russisch in der MySQL-Datenbank gespeichert wird. Versucht man einfach nur die russischen Zeichen einzufügen, kommt nur Müll raus.
Mußt Du wirklich umwandeln? Soweit ich weiß, kannst Du die Vorteile, die es bringt, die Daten im kyrillischen Zeichensatz in MySQL zu speichern (z.B. richtige Sortierung) sowieso nicht nutzen, wenn Du in der gleichen Datenbank noch andere Charsets verwendest, weil Du MySQL leider nur mit einem fixen Charset starten kannst.
Ich habe das bis jetzt nur mit Polnisch & Japanisch gemacht, aber da funktioniert es ohne Probleme, wenn Du die Daten per Formular eingibst, und die Seite mit dem Formular das richtige Charset (in meinem Fall z.B. "ISO-8859-2" und "Shift_JIS") für die Sprache hat, das Du auch auf der Ausgabeseite wieder verwendest. Dann brauchst Du Dir über die Kovertierung keine Gedanken machen (die Daten stehen dann allerdings nicht in Unicode in der Datenbank, bzw. vielleicht tun sie es auch, aber ich weiß es nicht, Hauptsache es funktioniert ;-)).
Viele Grüße
Stephan
Hi,
Mit welcher Funktion bzw. Einstellungen kann ich das so mit PHP umwandeln?
schau Dir mal http://www.php.net/manual/en/ref.mbstring.php an.
Ausserdem kann MySQL (entsprechend konfiguriert) auch kyrillische Schriftzeichen speichern.
Jan
--