ich habe eine Tabelle mit Übersetzungen von Fachbegriffen angelegt. Diese funktioniert soweit, nur habe ich Probleme mit den russischen Begriffen.
Welchen Zwischenschritt muß ich beim Abspeichern anlegen, damit das Feld mit den russischen Zeichen solche auch richtig anlegt und später wieder ausgibt?
Bißchen spärlich die Infos. Was für eine Art von Tabelle ist das (mySQL, HTML), wie hast Du die angelegt, was genau funktioniert nicht (werden die Sonderzeichen nicht in die DB geschrieben, stimmt die Ausgabe nicht). Gibt mal eine etwas umfangreichere Beschreibung!
In der einfueg.php wird dann ein insert ausgeführt:
insert into list (english,russian) values ('$english','$russian')
Die Daten werden in die Tabelle eingefügt, nur leider wird dabei der russische Text:
Сила при расслоение
in die Zeichenfolge: Ñèëà ïðè ðàññëîåíèå umgewandelt.
Diese wird dann auch wieder ausgegeben.
Offenbar werden die russischen Zeichen nicht richtig übernommen oder erkannt.
Wenn ich aber im MyAdmin die russischen Zeichen direkt in das Tabellenfeld einfüge, dann werden diese auch richtig ausgegeben.
Es muß also irgendeinen Zwischenschritt bei der Zeichenübergabe aus Formular geben, der mir fehlt.
Ich habe gerade nochmal die Tabelle in MySQL angesehen - bei der Eingabe über den MyAdmin werden die russischen Zeichen oder sonstige Sonderzeichen gleich in die entsprechenden Codes umgewandelt:
Сила при...
dies ergibt natürlich die korrekte Ausgabe in HTML.
Ich suche nach einer Lösung dafür in SELFPHP, habs nur leider noch nicht gefunden.
klappt nicht, habs versucht - Umwandlung von $russian:
$russian_corr=htmlentities($russian);
macht aus Продавец einfach wieder Ïðîäàâåö, diese sind in der Datenbank allerdings als HTML-Codes gespeichert:
Ïðîäàâåö
Muß ich evtl. schon vor der Übergabe aus dem Formular an PHP ansetzen?
nun, jetzt gehts, ich habe mir den Header des MyAdmin angesehen und meinen erweitert:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de" dir="ltr">
In der PHP-Datei dann die Umwandlung:
$russian_corr=htmlspecialchars($russian);
$russian_code = str_replace("& a m p ; #","&#",$russian_corr);
Der str_replace ist notwendig, weil die russischen Zeichen nicht korrekt übertragen werden, egal ob über htmlspecialchars oder htmlentities:
Jedes russische Zeichen wird als Konstrukt aus
& a m p ; #nummer; (Beispiel: & a m p ;#1055; )
wiedergegeben. (Achtung Leerzeichen sind nur zur Darstellung eingefügt, PHP schreibt den Code ohne Leerzeichen.)
Richtig wäre &#nummer; (Beispiel: П )
Mir ist nicht so ganz klar, warum amp; dazwischen geschrieben wird. Ich lösche es durch den str_replace einfach wieder, aber so ganz richtig kann dies nicht sein.
Vielleicht hat ja jemand noch eine Idee?
Vielen Dank schon mal
sunshine
Geändert von sunshine (01.06.2004 um 11:28:41 Uhr)