[TYPO3-german] Konvertierung von Umlauten und Sonderzeichen via PHP-Skript

Björn Hahnefeld b.hahnefeld at nal-vonminden.com
Thu Dec 11 13:58:52 CET 2014


Hallo Bernd,

leider muss ich an der Skript-Lösung festhalten. Nervig, aber wahr ;)!
Problem ist noch immer: wenn ich zweistufig vorgehen will, lasse ich einfach
mein "//header('Content-type: text/plain; charset=utf-8');" weg. Dann kann
ich alle Umlaute konvertieren, die in
"get_html_translation_table(HTML_ENTITIES);" enthalten sind.

Danach wollte ich UTF-8 aktivieren, um die restlichen Sonderzeichen um zu
wandeln. Ggf. sogar über ein separates Skript. Doch so ganz ging meine
Rechnung nicht auf...

Ich habe nämlich Felder, die sowohl die von
get_html_translation_table(HTML_ENTITIES); abgedeckten Sonderzeichen enthält
als auch beispielsweise "Ć"... In spätestens diesem Fall ist "Ć"
fälschlicherweise in ein "?" umgewandelt. Die Idee, vielleicht wie TYPO3
vorzugehen, und mit SET Names zu erzwingen, dass das Skript nicht die
Verbindung mit latin1 sondern UTF-8 aufbaut, ist bisher fehlgeschlagen... Oh
man.

Hast du vielleicht trotzdem noch eine Idee für mich?

Viele Grüße

Björn

P.S.:
Da wir einen Shared-Hosting-Server haben, konnte ich dein Skript noch nicht
ausprobieren. Ist es denn so, dass deine Konvertierung tatsächlich die DB
nicht "nur" in UTF-8 umwandelt? Ich glaube nämlich, dass da keine Entities
bei Sonderzeichen verwendet werden, da ja UTF-8. Aber ich brauche für jedes
Sonderzeichen explizit ein Entity... :(

-----Ursprüngliche Nachricht-----
Von: typo3-german-bounces at lists.typo3.org
[mailto:typo3-german-bounces at lists.typo3.org] Im Auftrag von bernd wilke
Gesendet: Mittwoch, 10. Dezember 2014 14:32
An: typo3-german at lists.typo3.org
Betreff: Re: [TYPO3-german] Konvertierung von Umlauten und Sonderzeichen via
PHP-Skript

Am 10.12.14 13:43, schrieb Björn Hahnefeld:
> Das Skript wäre mir insofern lieber, weil ich es mehrfach durchlaufen
lassen
> kann und somit noch Änderungen im laufenden Betrieb machen lassen kann
(bis
> zum Schluss). Allerdings habe ich das Problem, dass die Daten in
phpMyAdmin
> richtig drinnen stehen und in meinem Skript aber "?" statt dem
Sonderzeichen
> zurück gegeben wird.

dafür sollten folgende Zeilen sein:
echo "ALTER DATABASE $1 CHARACTER SET utf8 COLLATE utf8_general_ci;" | 
mysql -u $2 -p$3
echo mysqldump
#                                            v---- here insert utf8 if 
utf8 is stored in latin-fields
#                                            v---- hier utf8 eintragen 
wenn utf8 in latin-feldern gespeichert ist
mysqldump -u $2 -p$3 --default-character-set=latin1 --databases $1 > 
$1.orig.sql

es ist halt ein Unterschied zwischen: Die Verbindung zum Server, die 
Datenbank, die Tabelle, das Feld ist ... kodiert.
und wenn du phpmyadmin benutzt hat der Browser auch noch die Möglichkeit 
die Zeichen umzuinterpretieren.

 > Was meinst du denn mit SED?
http://de.wikipedia.org/wiki/Sed_%28Unix%29
damit kannst du die Zeichenumwandlung auch ins script packen sobald 
deine Zeichen sauber exportiert sind.

bernd
-- 
http://www.pi-phi.de/cheatsheet.html
_______________________________________________
TYPO3-german mailing list
TYPO3-german at lists.typo3.org
http://lists.typo3.org/cgi-bin/mailman/listinfo/typo3-german



More information about the TYPO3-german mailing list