php.de

Zurück   php.de > Webentwicklung > Datenbanken

Datenbanken SQL und Co

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.01.2009, 04:58  
Erfahrener Benutzer
 
Registriert seit: 29.08.2008
Beiträge: 777
halskrause wird schon bald berühmt werden
Standard [Erledigt] Zeichensatz Konflikt...

Hallo.
Ich habe ein Script (UTF- dass in eine MySQL Tabelle (Ascii) Daten einfügen soll. Leider muss das Script in UTF-8 sein, da ich in diesem fremde Zeichen abfangen und konvertieren muss damit die Daten auf jeden Fall in Ascii in die Tabelle einfliessen müssen.
Jedoch habe ich dabei Probleme, dass Umlaute falsch dargestellt werden. Wie z.B. "Peter Müller".

Gibt es einen Weg, diesen Konflikt zu lösen, ohne das Format des Scripts und der DB zu ändern?
halskrause ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 27.01.2009, 09:10  
Erfahrener Benutzer
 
Benutzerbild von JEGO
 
Registriert seit: 01.12.2003
Beiträge: 2.555
PHP-Kenntnisse:
Anfänger
JEGO wird schon bald berühmt werden
Standard

Probier mal
PHP-Code:
$text preg_replace("/ü/","ü"$text); 
__________________
Gruß JEGO

Ein PHP Script tut, was Du schreibst, nicht was Du willst.
JEGO ist offline   Mit Zitat antworten
Alt 27.01.2009, 11:09  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Du kannst versuchen, aus dem Script einen Ansi-Header zu senden (auch aus dem Formularscript) und nach der DB Connection die Query SET CHARACTER SET "8859..." für die aktuelle Verbindung absetzen.

)
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 27.01.2009, 11:31  
Moderator
 
Benutzerbild von Chriz
 
Registriert seit: 11.05.2008
Beiträge: 6.266
Chriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer AnblickChriz ist ein wunderbarer Anblick
Standard

Zitat:
Leider muss das Script in UTF-8 sein, da ich in diesem fremde Zeichen abfangen und konvertieren muss damit die Daten auf jeden Fall in Ascii in die Tabelle einfliessen müssen.
Muss man das verstehen, ich meine grammatikalisch?

Welchen Sinn macht es denn, das Eingabeformat auf UTF-8 zu stellen, wenn das Ausgabeformat ASCII ist? Soviel konvertieren kannst du garnicht ..
Chriz ist offline   Mit Zitat antworten
Alt 27.01.2009, 11:54  
Erfahrener Benutzer
 
Registriert seit: 29.08.2008
Beiträge: 777
halskrause wird schon bald berühmt werden
Standard

Code:
$text = preg_replace("/ü/","ü", $text);   
Sowas ähnliches habe ich auch schon gemacht:

PHP-Code:
    $old = array( 'Ş' 'ş' 'Ç' 'ç' 'Ğ' 'ğ' 'I' 'ı' 'ü');
    
$new = array( 'S' 's' 'C' 'c' 'G' 'g' 'I' 'i' 'ü');
    
$uInput str_replace($old$new$message); 
Und diese Zeichen kommen auch sauber an. Das Script muss in UTF sein, weil ich sonst diese Zeichen (z.B. 'Ş') garnicht drin haben kann. Jedoch habe ich probleme mit Umaluten.

Zitat:
Du kannst versuchen, aus dem Script einen Ansi-Header zu senden (auch aus dem Formularscript) und nach der DB Connection die Query SET CHARACTER SET "8859..." für die aktuelle Verbindung absetzen.
Das probier ich mal. Weiss jemand, wo ich hierfür ein Beispiel finden kann?
halskrause ist offline   Mit Zitat antworten
Alt 27.01.2009, 12:59  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

(Jemand) Im mysql Handbuch.

ASCII ist nicht UTF-8, da hat Chrisz recht. replace (erst recht reguläres) finde ich eine schlechte Lösung.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 27.01.2009, 14:23  
Erfahrener Benutzer
 
Registriert seit: 29.08.2008
Beiträge: 777
halskrause wird schon bald berühmt werden
Standard

Das, was ich auch nicht verstehe ist, dass wenn ich in MySQL manuell Daten einfüge, Umlaute richtig dargestellt werden. Wenn es von einem Script kommt, werden die Umlaute falsch dargestellt.
halskrause ist offline   Mit Zitat antworten
Alt 27.01.2009, 14:29  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.987
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Schuld ist die Datenbankverbindungscodierung.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist offline   Mit Zitat antworten
Alt 27.01.2009, 14:37  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Daten und Script müssen in UTF8 codiert sein, und die Kollation der Mysql-Tabelle sollte auch auf utf8 eingestellt sein. Ich fahre alle Tabellen mit UTF-8 general ci .

Falls jemand die Suchfunktion nach diesem Problem nutzt und hier ankommt:
Wenn die Tabelle auf UTF-8 steht, und das Script ebenso, und man auch SET NAMES UTF8 ausgeführt hat, man aber eine CSV-Datei importiert mit Ansi-Daten, dann werden alle Strings vor einem Sonderzeichen abgeschnitten. Aus 'München' wird 'M' und aus 'Grün' wird 'Gr'.
(Ist mir gestern passiert - Asche auf mein Haupt)
Wolla ist offline   Mit Zitat antworten
Alt 27.01.2009, 15:10  
Erfahrener Benutzer
 
Registriert seit: 29.08.2008
Beiträge: 777
halskrause wird schon bald berühmt werden
Standard

Zitat:
Zitat von nikosch Beitrag anzeigen
Schuld ist die Datenbankverbindungscodierung.
Ich habe das auch mal auf UFT-8 gestellt. War das selbe Problem. Mein Server liegt ist bei HE. Kann es vielleicht an dem System liegen?
halskrause 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] Zeichensatz in der Datenbank? ph|L PHP Tipps 2009 2 07.01.2009 14:32
[Erledigt] Zeichensatz Problem 22hase PHP Tipps 2009 6 07.01.2009 13:15
[Erledigt] Zeichensatz Problem freggeln Datenbanken 12 04.01.2009 18:30
Welcher Zeichensatz ist zu empfehlen? atthex PHP Tipps 2008 6 28.12.2008 19:45
Zeichensatz prüfen halskrause PHP Tipps 2008 4 12.12.2008 20:17
Arabischer Zeichensatz Steffi.S Datenbanken 11 28.05.2008 09:30
Zeichensatz Probleme aus Datenbankabfrage mafra PHP Tipps 2008 3 04.03.2008 13:51
XML Zeichensatz cycap PHP Tipps 2008 4 20.11.2007 10:02
Zeichensatz einer Formularfeldabfrage bestimmen Unzi PHP Tipps 2007 5 07.07.2007 21:18
XML mit PHP erstellen -> Problem mit Zeichensatz madSoul PHP Tipps 2007 11 23.03.2007 12:36
welchen zeichensatz benutzt windows ? cytrobic HTML, Usability und Barrierefreiheit 6 16.09.2006 17:48
XML Dateien richtige Zeichensatz solarwasser HTML, Usability und Barrierefreiheit 3 26.05.2006 21:59
Konflikt zweier Werte Jacks Rache Datenbanken 9 24.08.2005 20:31
Zeichensatz ermitteln workaholic PHP Tipps 2005 3 07.04.2005 16:42
Problem mit Zeichensatz (xml,php) HTML, Usability und Barrierefreiheit 6 19.01.2005 14:14

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
zeichen für konflikt, konflikt zeichen, http://www.php.de/datenbanken/51115-erledigt-zeichensatz-konflikt.html, zeichensatz konflikt, csv zeichensatz bestimmen, zeichen konflikt, konflikt im zeichensatz, zeichensatzkonflikt, fremde schriftzeichen in utf-8 umwandeln, mysql konvertieren utf8 abgeschnitten, mysql mit arabisch, mysql arabisch zeichen, preg_replace &uuml, preg_replace buchstaben arabisch, sonderzeichen konflikte im server, php \ã¼\ utf-8 convert, zeichen für ein konflikt, string nach sonderzeichen abgeschnitten utf8 mysql php, php preg_replace \ü\, zeichensatz konfikt

Alle Zeitangaben in WEZ +2. Es ist jetzt 04:23 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