php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 24.01.2012, 14:28  
nvs
Neuer Benutzer
 
Registriert seit: 24.01.2012
Beiträge: 11
PHP-Kenntnisse:
Anfänger
nvs befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] Sonderzeichen fehlen nach DB-Import

Aus Excel exportiere ich Daten als TXT, wobei die Felder innerhalb des Datensatzes mittels des Zeichens | separiert sind. Es ist vom Prinzip her also eine Art CSV-Datei. Diese öffne ich mit Notepad++ und codiere sie von ANSI auf UTF8 ohne BOM um. Danach benutze ich ein selbst erstelltes PHP-Script, um neue Datensätze in die DB zu importieren bzw. vorhandene zu aktualisieren.
Um den Wert eines Buchtitel enthaltenden Feldes in die SQL-Anweisung zu setzen, verwende ich das:

PHP-Code:
mysql_real_escape_string($data[7]) 
Damit dachte ich mir eigentlich Probleme mit Umlauten und Sonderzeichen zu verhindern, wenn diese nicht escaped sind.

Jetzt passiert folgendes: In dem Feld bzw. der Variable $data[7] ist der Buchtitel noch korrekt enthalten. In die Datenbank wird er jedoch nicht komplett richtig übertragen. Hinsichtlich der Umlaute bedeutet dies z.B., dass alle Umlaute innerhalb des Buchtitels korrekt vorhanden sind - sofern der Buchtitel jedoch mit einem Umlaut beginnt, so fehlt dieser (aus Österreich wird dann bspw. sterreich). Ist das erste Wort des Titels in "" gesetzt, so fehlen in der DB dann beide (Bsp.: aus "Österreich" wird dann Österreich).

Was läuft da schief?

Zur Ergänzung:
Die Kollation der DB is utf8_general_ci
Die Script-Datei ist in ANSI und beinhaltet gleich zu Beginn

PHP-Code:
mysql_set_charset('utf8',$GLOBALS[link]); 
Ein Umkodieren in UTF8 brachte aber auch nichts.
nvs ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 24.01.2012, 14:46  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

1) bitte folgendes beachten : http://www.php.de/adventskalender-20...perlative.html (27: Der ultimative Megakick der Superlative)

2) bei Excel gilt : der kann gar kein UTF8 - sondern spricht Latin1 - daher wirst du wohl um eine Lösung mittels iconv-Funktion nicht umhinkommen
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 24.01.2012, 15:25  
nvs
Neuer Benutzer
 
Registriert seit: 24.01.2012
Beiträge: 11
PHP-Kenntnisse:
Anfänger
nvs befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von eagle275 Beitrag anzeigen
1) bitte folgendes beachten : http://www.php.de/adventskalender-20...perlative.html (27: Der ultimative Megakick der Superlative)

2) bei Excel gilt : der kann gar kein UTF8 - sondern spricht Latin1 - daher wirst du wohl um eine Lösung mittels iconv-Funktion nicht umhinkommen
1) Verstehe ich nicht!? Genau DAS

Code:
Ab PHP 5.2.3 existiert übrigens die Funktion mysql_set_charset(), welche statt einem manuellen SET NAMES genutzt werden sollte, da hier noch verifiziert wird, ob der gewünschte Zeichensatz vom Client überhaupt unterstützt wird.
mache ich ja ...

2) Verstehe ich auch nicht!? Wie ich bereits sagte: Die exportierte Datei wird mittels Notepad++ in UTF8 umkodiert ...
nvs ist offline   Mit Zitat antworten
Alt 24.01.2012, 15:43  
meikel
Gast
 
Beiträge: n/a
Standard

Laß Dir doch einfach den Text von Mutti vorlesen und erklären... <grrr>
  Mit Zitat antworten
Alt 24.01.2012, 16:00  
nvs
Neuer Benutzer
 
Registriert seit: 24.01.2012
Beiträge: 11
PHP-Kenntnisse:
Anfänger
nvs befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von meikel Beitrag anzeigen
Laß Dir doch einfach den Text von Mutti vorlesen und erklären... <grrr>
Wow, dieser Beitrag zeugt von einem wahrlich gehobenen Niveau in diesem Forum ...

Hast Du auch etwas Sinnvolles beizutragen? Z.B. eben jene Erklärung?
nvs ist offline   Mit Zitat antworten
Alt 24.01.2012, 16:06  
meikel
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von nvs Beitrag anzeigen
Wow, dieser Beitrag zeugt von einem wahrlich gehobenen Niveau in diesem Forum ...
RTFM! Und wenn Du was nicht verstehst, dann lies es noch mal. Du hast kein Anrecht darauf, Dir das Handbuch vorlesen und erklären zu lassen.
  Mit Zitat antworten
Alt 24.01.2012, 16:21  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

dann noch ein Versuch - du konvertierst also deine CSV in utf8 - liest sie in ein ANSI-PHP-Script ein (deine Aussage da oben) - und damit sind die Variablen im ? richtig - auch im Ansi-Format .. der konvertiert also, wo er kann direkt wieder zurück in ANSI - leider geht das bei den Umlauten nicht, deswegen steht da dann "Müll" drin - oder die Zeichen fehlen -

Daher hatte ich auf den Text verlinkt, wo darauf hingewiesen wird, dass ALLE möglichen "Stellen" auf utf8 getrimmt werden müssen .... du hast zwar die richtige Funktion verwendet - aber den Nebensatz nicht bedacht - der setzt die Verbindung nur dann auf utf8, wenn der CLIENT - das wäre dein Script, das auch "spricht" - tut aber nicht, sondern spricht ANSI = ASCII

Datenbank selbst
Collation der Text-Felder in der DB (varchar / char / text usw.)
Verbindung zwischen Datenbank und PHP-Script
PHP-Script selbst
Ausgabe Richtung Client (HTML)
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste

Geändert von eagle275 (24.01.2012 um 16:25 Uhr).
eagle275 ist offline   Mit Zitat antworten
Alt 24.01.2012, 16:35  
nvs
Neuer Benutzer
 
Registriert seit: 24.01.2012
Beiträge: 11
PHP-Kenntnisse:
Anfänger
nvs befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von meikel Beitrag anzeigen
RTFM! Und wenn Du was nicht verstehst, dann lies es noch mal. Du hast kein Anrecht darauf, Dir das Handbuch vorlesen und erklären zu lassen.
Lass Deinen Frust doch bitte irgendwo anders ab! Bzw. wenn Du es schaffst, darfst Du gerne weiter mitlesen ... vielleicht fällt auch Dir dann auf, dass ich sicher nicht zu blöd zum Lesen bin. Nur wenn man mir einen Tipp a la "Mach dies" gibt und ich das bereits ausprobiert habe, dann nehme ich mir das "Recht" heraus, nachzufragen. DU musst ja nicht antworten ...
nvs ist offline   Mit Zitat antworten
Alt 24.01.2012, 16:38  
nvs
Neuer Benutzer
 
Registriert seit: 24.01.2012
Beiträge: 11
PHP-Kenntnisse:
Anfänger
nvs befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von eagle275 Beitrag anzeigen
Daher hatte ich auf den Text verlinkt, wo darauf hingewiesen wird, dass ALLE möglichen "Stellen" auf utf8 getrimmt werden müssen .... du hast zwar die richtige Funktion verwendet - aber den Nebensatz nicht bedacht - der setzt die Verbindung nur dann auf utf8, wenn der CLIENT - das wäre dein Script, das auch "spricht" - tut aber nicht, sondern spricht ANSI = ASCII
Ich habe das schon verstanden. Doch ich sagte ja eingangs:

Zitat:
Die Script-Datei ist in ANSI und beinhaltet gleich zu Beginn


PHP-Code:
mysql_set_charset('utf8',$GLOBALS[link]);

Ein Umkodieren in UTF8 brachte aber auch nichts.
Das Script in UTF8 ist also nicht die Lösung.
Ferner wundert mich, dass ja eben z.B. nicht alle Umlaute nicht richtig importiert werden. Die innerhalb des Buchtitels stehen ja eben richtig in der DB. Wäre es also ein reines Kodierungs-Problem, dann müssten doch eigentlich alle Umlaute falsch sein ...!?
nvs ist offline   Mit Zitat antworten
Alt 25.01.2012, 07:56  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.561
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

doch .. das Script in ANSI ist genau dein Problem - weil du den Nebensatz nicht beachtet hast ... ich zitiere nochmal :

setzt den Charset NUR dann, wenn ihn der CLient auch spricht - und dein Client = PHP-Script spricht ihn nicht - also bleibt der Charset der Verbindung auch auf ANSI ... ergo fehlende Umlaute . ...

bitte wehre dich nicht gegen jeden guten Ratschlag, sondern setze bitte die Empfehlungen aus dem verlinkten Text um
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] PHP und Dateien mit Sonderzeichen ePole PHP Einsteiger 10 04.11.2011 11:37
[Erledigt] MySQL ignoriert Sonderzeichen. php-dummy PHP Einsteiger 26 15.09.2011 16:08
[Erledigt] Wieder sonderzeichen probleme syNTax PHP Einsteiger 20 24.04.2011 07:36
Übermittlung von Sonderzeichen schlägt fehlt zerofs2001 PHP Tipps 2010 3 05.10.2010 14:46
[Erledigt] Bei CSV Import in MySQL Datei vorher von Sonderzeichen befreien Rutor PHP Tipps 2010 10 04.10.2010 22:51
Problem mit Sonderzeichen aus MySQL-Datenbank in XML Der_Seb Datenbanken 2 07.06.2010 20:33
URL von Applet in Frame anzeigen pfu PHP Tipps 2010 5 22.02.2010 13:54
Regulärer Ausdruck für ein Sonderzeichen Rubio PHP Tipps 2010 11 01.02.2010 00:56
XML Import in OOP Creator Software-Design 12 15.12.2009 11:52
exec() Kommando mit Sonderzeichen skummy PHP Tipps 2009 6 30.07.2009 16:31
[Erledigt] Umlaute und Sonderzeichen decodieren Sermon PHP Tipps 2009 9 27.03.2009 08:18
Die Sache mit den Sonderzeichen nach und vor Formularprüfung TailerD PHP Tipps 2006 12 02.06.2006 12:58
Wikipedia, Sonderzeichen und file_get_contents(); pb PHP Tipps 2006 2 20.01.2006 20:02
Sonderzeichen in der Tabelle Mutatos Datenbanken 4 17.03.2005 15:28
Sonderzeichen über $_GET Calexico PHP Tipps 2005 1 10.02.2005 17:40

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
excel csv-datei ansi als utf-8 in mysql importieren wie, csv-database-import.org utf8, excel textimport umlaute, excel 2010 text import probleme mit umlaute, umlaute nach datenbank import weg, excel 2011 mac import csv umlaute, php umlaute fehlen komplett, php csv datei einlesen umlaute am anfang fehlen, sonderzeichen sind escaped, beim datenimport csv werden umlaute nicht mit importiert, mysql nach import einer csv datei wort ab umlaute, file_get_contents umlaute fehlen, php csv export umlaute fehlen, excel nach import aus datenbank keine umlaute

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:45 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum