| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

12-09-2009, 15:18
|
|
martinm79
Registrierter Benutzer
|
|
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
|
|
ISO-8859-1 nach UTF-8 und die Sonderzeichen
Ich versuche verzweifelt Daten nach Google Base zu exportieren, aber bei den Sonderzeichen kommen immer Fehler.
Dabei benutze ich die Funktion
PHP-Code:
iconv("ISO-8859-1", "UTF-8", $daten);
Aber der Fehler für ein ü sieht dann so aus.
für
Warum geht das mit iconv() nicht? Laut Beschreibung wandelt diese Funktion ja den Zeichensatz um.
Gibt es da eine saubere Lösung ohne jedes Sonderzeichen zu parsen?
__________________
Gut geraten ist halb gewußt.
|

12-09-2009, 15:22
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von martinm79
Aber der Fehler für ein ü sieht dann so aus.
für
|
Das ist kein "Fehler für ein ü" - sondern die Bytesequenz, die in UTF-8 ein ü darstellt, als ANSI/ASCII interpretiert.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

12-09-2009, 15:26
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Die Wandlung von ISO-8859-1 nach UTF-8 ist verlustfrei.
Andersrum nicht unbedingt.
|

12-09-2009, 15:38
|
|
martinm79
Registrierter Benutzer
|
|
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
|
|
Und welche Funktion muß ich da jetzt einsetzten damit keine Fehler mehr kommen?
__________________
Gut geraten ist halb gewußt.
|

12-09-2009, 15:49
|
|
combie
PHP Expert
|
|
Registriert seit: May 2006
Beiträge: 2.925
|
|
Du musst auch die HTML Präsentation auf UTF-8 umstellen:
1. passenden Content-type Header senden
2. das richtige Meta Tag setzen
|

12-09-2009, 15:59
|
|
martinm79
Registrierter Benutzer
|
|
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
|
|
Wenn ich ein UTF-8 Header setzte, geht es bei mir local.
Aber ich lade eine Datei bei Google Base hoch und da kann ich ja kein Header setzten.
Oder muß ich alle Sonderzeichen wie z.b. das "ü" in
umwandeln?
__________________
Gut geraten ist halb gewußt.
|

12-09-2009, 16:36
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Wie überträgst du die Daten an Google?
|

12-09-2009, 16:40
|
|
martinm79
Registrierter Benutzer
|
|
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
|
|
Noch nicht per FTP.
Ich lade erstmal nur die Daten als Datei hoch. Und dabei zeigt er mir den "Fehler" an.
__________________
Gut geraten ist halb gewußt.
|

12-09-2009, 16:45
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
Und in welchem Format? Ich habe Google Base noch nicht genutzt, aber so wie ich das sehe sind diese Formate möglich:
• Durch Tabulatorzeichen getrennte Datei
• XML-Datei im RSS 2.0-Format
• XML-Datei im RSS 1.0-Format
• XML-Dateien im ATOM-Format
Bei letzteren dreien wirst du auf jeden Fall auch den korrekten Zeichensatz angeben müssen. Hast du nicht mal eine Beispieldatei?
|

12-09-2009, 16:56
|
|
martinm79
Registrierter Benutzer
|
|
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
|
|
PHP-Code:
<?xml version="1.0"?>
<rss version="2.0" xmlns:g="http://base.google.com/ns/1.0">
<channel>
<item>
</item>
</channel>
</rss>
Soweit ist alles Simple, bis auf die Sonderzeichen. Ich habe jetzt erstmal strtr() benutzt um das ü etc umzuwandeln.
Ich finde die Lösung aber unsauber. Aber auf die schnelle die einzige Lösung.
Ansonsten kann ich dir Base nur empfehlen, wenn du es noch nicht nutzt.
__________________
Gut geraten ist halb gewußt.
|

12-09-2009, 18:42
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von martinm79
Soweit ist alles Simple
|
Ja, zu simple - warum gibst du denn nicht die verwendete Zeichenkodierung so an, wie XML es vorsieht?
http://de.selfhtml.org/xml/regeln/xm...#zusatzangaben
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

12-09-2009, 19:22
|
|
PHP-Desaster
PHP Expert
|
|
Registriert seit: Mar 2006
Beiträge: 3.104
|
|
UTF-8 ist der Standardwert, wenn keine Angabe gemacht wird. Du machst noch irgendwo anders einen Fehler beim Erstellen der XML-Datei. Wie erstellst du diese? DOM? Per Hand?
|

13-09-2009, 02:36
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo,
wo kommt das ü denn überhaupt her? Aus einer Datenbank? Aus einer externen Datei? Steht es direkt im XML-erzeugenden Skript? In jedem Fall ist zu prüfen, wie die entsprechende Datenquelle codiert ist und im Falle einer Datenbank auch noch, wie der Verbindungszeichensatz eingestellt ist.
Außerdem hast du noch nicht erwähnt, wie die genaue Fehlermeldung lautet, oder validiert das XML und nur du siehst die interpretierte Zeichenfolge als Fehler?
Gruß,
Amica
Geändert von AmicaNoctis (13-09-2009 um 02:44 Uhr)
|

22-09-2009, 00:41
|
|
martinm79
Registrierter Benutzer
|
|
Registriert seit: Jan 2004
Ort: Deutschland
Beiträge: 744
|
|
PHP-Code:
<?xml version="1.0" encoding="ISO-8859-1">
Das war dei Lösung. Base geht auch mit ISO was ich nicht wußte. Danke für die Hilfe.
__________________
Gut geraten ist halb gewußt.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|