php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > SQL / Datenbanken
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


SQL / Datenbanken Probleme mit SQL? Hier könnt ihr eure Fragen zu SQL (MySQL, PostgreSQL, MS-SQL und andere ANSI-SQL Server) los werden.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 25-10-2006, 15:29
avo
 Newbie
Links : Onlinestatus : avo ist offline
Registriert seit: Sep 2006
Beiträge: 4
avo ist zur Zeit noch ein unbeschriebenes Blatt
Standard Problem mit Character Sets

Hallo,

vielleicht kann mir hier jemand einen Hinweis zu folgenden Problem geben. Ich muss in einer Tabelle teilweise polnische Inhalte verwalten können. Nur werden zur Zeit einige poln. Sonderzeichen nicht richtig in die DB geschrieben. Kein Problem habe ich mir gedacht und wollte mir mal die Einstellungen zu den Character Sets ausgeben lassen. Nur irgendwie scheint keiner der Befehle zu Character Sets (z.B. "SHOW CHARACTER SET" mal als einfaches Beispiel) zu funktionieren.
Hat dazu jemand eine Idee?

Ach ja, MySQL läuft auf auf einer Debian Sarge Kiste und ich habe auch Zugriff als Root darauf.
__________________
Freundliche Grüße
avo
Mit Zitat antworten
  #2 (permalink)  
Alt 25-10-2006, 15:36
Kropff
  Administrator
Links : Onlinestatus : Kropff ist offline
Registriert seit: Mar 2002
Ort: Köln
Beiträge: 11.722
Kropff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
MySQL läuft auf auf einer Debian Sarge Kiste
dann ist das wohl noch eine 4.0 version, die kann das nocht nicht. erst ab 4.1 oder 5.0 läuft das mit character sets

gruß
peter
__________________
Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
Meine Seite
Mit Zitat antworten
  #3 (permalink)  
Alt 25-10-2006, 15:36
mrhappiness
 PHP Guru
Links : Onlinestatus : mrhappiness ist offline
Registriert seit: Oct 2002
Beiträge: 14.890
mrhappiness ist zur Zeit noch ein unbeschriebenes Blatt
mrhappiness eine Nachricht über AIM schicken mrhappiness eine Nachricht über Yahoo! schicken
Standard

SHOW CHARACTER SET gibt es seit Version 4.1.0.

Welche Version setzt du ein?
__________________
Ich denke, also bin ich. - Einige sind trotzdem...
Mit Zitat antworten
  #4 (permalink)  
Alt 25-10-2006, 15:59
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

ein mal für immer!
wenn du mit mehreren Sprachen arbeiten willst nur utf-8 benutzen.
dabei spielt charset von db bei einer php-Anwendung kaum eine rolle.
bei älteren mysql versionen muss man aber auf die länge von felder aufpassen, da für darschtellung von einer Kyrilischer Buchstabe etwa 4 lataeinischen rein passen.
__________________
Slava
bituniverse.com
Mit Zitat antworten
  #5 (permalink)  
Alt 25-10-2006, 16:20
avo
 Newbie
Links : Onlinestatus : avo ist offline
Registriert seit: Sep 2006
Beiträge: 4
avo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ok, dann habe ich noch 'ne ältere Version (4.0). Kein Wunder, dass es nicht funktioniert hat.
Zitat:
Original geschrieben von Slava
dabei spielt charset von db bei einer php-Anwendung kaum eine rolle.
Wie darf ich das jetzt verstehen? Wenn ich mit PHP einen Text utf-8 kodiere ist es egal wenn die DB z.B. den Latin1-Zeichensatz hat? Oder meintest du, dass es egal ist wenn die DB utf-8 hat?
__________________
Freundliche Grüße
avo
Mit Zitat antworten
  #6 (permalink)  
Alt 25-10-2006, 16:26
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

ersteres ....
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #7 (permalink)  
Alt 25-10-2006, 16:39
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

ja es wird auch mit Latin1 funktionieren.
wenn formulare in utf-8 gesendet sind und bei anzeige auch utf-8 verwendet wird, dann gibt es kein problem mit ausnahme von der länge von Strings.
Ä ist jetzt 2 zeichen lang.
PHP-Code:
header('Content-Type: text/html; charset=utf-8');
$ding="дфгххтреыÄswüüöÖ";//russische buchstaben
$str="Ä";//Ä
echo "<html>";
echo 
$ding."<br />";
echo 
$str." ist ".strlen($str)." zeichen Lang ";
echo 
"</html>"
EDIT:
es ist aber utf-8 tabellen zu empfehlen, da sie extra für utf-8 ausgedacht sind.
mit PHP6 wird die sache noch leichter, da wir die ganze code in utf-8 erstellen können.

__________________
Slava
bituniverse.com

Geändert von Slava (25-10-2006 um 16:52 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 25-10-2006, 17:06
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Slava
ja es wird auch mit Latin1 funktionieren.
wenn formulare in utf-8 gesendet sind und bei anzeige auch utf-8 verwendet wird, dann gibt es kein problem mit ausnahme von der länge von Strings.
Na ja, wenn man mal von Sortierungen etc. absieht ...
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #9 (permalink)  
Alt 25-10-2006, 17:42
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von wahsaga
Na ja, wenn man mal von Sortierungen etc. absieht ...
mit sortirung gibt es eigentlich kein problem, da es eigentlich kein sinn hat japanische zeichen mit deutschen zu vergleichen.
die tabelle muss in utf-8 sein,
damit es ein japanische zeichen als "1" zeichen erkannt wird und nicht als 4 deutsche buschstaben,
damit die stringfunctionen, die zeichenlängen brauchen wie z.b.s "left" die buchstaben und nicht bytes zählt .

edit: dabei habe ich vergessen, dass ein japanische zeihen nicht unbedingt eine Buchstabe ist, sondern kann auch ein ganzes satz bedeuten
__________________
Slava
bituniverse.com

Geändert von Slava (25-10-2006 um 17:56 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 25-10-2006, 19:02
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Slava
mit sortirung gibt es eigentlich kein problem, da es eigentlich kein sinn hat japanische zeichen mit deutschen zu vergleichen.
die tabelle muss in utf-8 sein,
damit es ein japanische zeichen als "1" zeichen erkannt wird und nicht als 4 deutsche buschstaben,
damit die stringfunctionen, die zeichenlängen brauchen wie z.b.s "left" die buchstaben und nicht bytes zählt .

edit: dabei habe ich vergessen, dass ein japanische zeihen nicht unbedingt eine Buchstabe ist, sondern kann auch ein ganzes satz bedeuten
Es ist vollkommener Schwachsinn dem DBMS vorzugaukeln, dass die Daten einen anderen Zeichensatz haben, als sie eigentlich haben.
Sowas führt spätestens bei der Wiederverwertung der Daten durch einen anderen, vernünftig programmierten, Client zu Problemen, die man *dann* aufgrund der schon vorhandenen, ggf. großen, Datenmenge nur noch durch weitere hässliche workarounds umgehen kann.

Vor MySQL 4.1 blieb einem leider nichts anderes übrig als die Daten utf8-kodiert in die latin1 Datenbank zu schreiben, seit der eben genannten Version kann man allerdings angeben welchen Zeichensatz die Daten haben und soll das auch in Gottes Namen bitte korrekt tun. Ansonsten kann man sein Projekt eigentlich auch gleich im Papierkorb speichern...

Und @php6
Man kann auch jetzt schon seinen php Code mit UTF8 speichern, mache ich, machen viele andere auch schon.
PHP ignoriert einfach jede Art von Mehrbyte-Zeichen, deshalb ist es ja überhaupt möglich jetzt zum Beispiel schon UTF8 zu verwenden.

Der Unterschied, bzw. die Änderung, umfasst die Beachtung des aktuellen Zeichensatzes durch PHP um dem Programmierer einige Probleme abzunehmen; z.B. Einfacher Vergleich von Strings, keine gesonderten Funktionen mehr, Anpassen der Ausgabe von Text vom Zeichensatz der Datei an den Zeichensatz des Outputs, ... weiteres findet sich auf http://www.zend.com/zend/week/php-unicode-design.txt
Generell ändert das nichts daran, dass man die Zeichenkodierung der Verbindung korrekt einstellen muss; Änderungen sind in Hinsicht der Datenbankschnittstelle aber wohl eher nicht zu erwarten, demnach hat das absolut nichts mit dem Thema zutun.
Mit Zitat antworten
  #11 (permalink)  
Alt 25-10-2006, 19:31
wahsaga
  Moderator
Links : Onlinestatus : wahsaga ist offline
Registriert seit: Sep 2001
Beiträge: 25.236
wahsaga befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Slava
mit sortirung gibt es eigentlich kein problem
Doch, gibt es.

Ein ä in UTF-8, als Latin-1 abgespeichert sieht so aus: ä
Wenn du das jetzt einsortieren willst, kannst du nicht erwarten dass dieses ä zwsichen a und b einsortiert wird - weil ä eben "größer" als a und größer als b ist.

Zitat:
die tabelle muss in utf-8 sein,
Natürlich, dann gibt es kein Problem.

Aber vorher war doch vom anderen Fall die Rede - dass die DB eben noch kein UTF-8 unterstützt, und man deshalb eben UTF-8 kodierte Daten als Latin-1 o.ä. ablegt.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
Mit Zitat antworten
  #12 (permalink)  
Alt 25-10-2006, 20:14
Slava
 PHP Senior
Links : Onlinestatus : Slava ist offline
Registriert seit: Nov 2002
Ort: Köln->Karlsruhe
Beiträge: 1.589
Slava befindet sich auf einem aufstrebenden Ast
Standard

1) nach kurzem überlegen, nehme ich die Aussage
dabei spielt charset von db bei einer php-Anwendung kaum eine rolle.
zurück.
die verschiedene Kollation von utf-8 bei mysql sind auch dafür gemacht worden um die sortierung und andere Sprachen-spezifische Funktionalitäten zu ermöglichen.
wenn aber in der Tabelle mit kollation utf8_swedish_ci auf ein mal ein paar chinesische wörter rein kommen, dann gibt es leider fast die gleiche probleme wie bei latain_1 tabellen.

OffTopic:
wann kommt endlich der Tag als ASCII für immer begraben wird?
char muss langsam in char32 für immer umwandeln
__________________
Slava
bituniverse.com
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
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.

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


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 21:11 Uhr.