Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Umlaute in DB

Frage Entwicklung PHP

Mitglied: yannick-server

yannick-server (Level 1) - Jetzt verbinden

23.10.2010, aktualisiert 17.11.2010, 3404 Aufrufe, 6 Kommentare

Hi!
Habe ein Problem bein Eintragen und Ausgeben von Daten aus meiner MySQL Datenbank.
Habe schon hier und in Google gesucht und folgende Lösung gefunden.

Beim Verbinden der Datenbank, führe ich diesen Query aus:
01.
mysql_query("SET NAMES 'utf8'");
Wenn ich nun die Daten eingebe funktioniert es wunderbar, in der Datenbank steht äöüß.
Gebe ich die Daten aber nun aus erhalte ich öüä�.

Kollation der Tabelle und des Feldes sind 'latin1_general_ci'.
Bin leider zu keiner Lösung gekommen.
Schonmal vielen Dank für eure Antworten
gruß Yannick

EDIT:
Wenn ich den Text normal ausgebe ohne htmlentites werden die Sonderzeichen richtig dargestellt.
Mitglied: godlie
23.10.2010 um 12:28 Uhr
Hallo eine einfache Frage sieht

latin1_general_ci gleich aus wie utf8 ?

Entweder alles utf8 oder alles latin entscheide dich.
Bitte warten ..
Mitglied: yannick-server
23.10.2010 um 12:46 Uhr
Was ist denn geeigneter?
Wenn ich mich für latin entscheiden, muss ich dann auch den HTML:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />hier ändern?

Wenn ich den Text normal ausgebe ohne htmlentites werden die Sonderzeichen richtig dargestellt.
Bitte warten ..
Mitglied: godlie
23.10.2010 um 12:48 Uhr
Also wenn du deine Daten per utf-8 aus / eingibst und das in ein latin1 feld speicherst dann darf es dich nicht wundern.

ich würde die kollation auf utf_general_ci oder so stellen, insofern du nicht schon daten drinnen hast, sollte dies der fall sein
musst du die daten ggf. umwandeln.
Bitte warten ..
Mitglied: yannick-server
23.10.2010 um 12:56 Uhr
Danke.
Ich hab jetzt mal die DB auf latin1 gestellt also mysql_query("SET NAMES 'latin1'");
Jetzt funktioniert die Ausgabe der vorhandenen Einträge, wenn ich aber neue Einträge erstelle werden diese als öüäÃ�
in der Datenbank gespeichert und auch wieder ausgegeben.
Bitte warten ..
Mitglied: yannick-server
23.10.2010 um 13:29 Uhr
Jetzt klapps:

Beim Verbinden mit der Datenbank:
mysql_query("SET NAMES 'latin1'");
mysql_query("SET CHARACTER SET 'latin1'");

Vor dem Eintragen
mysql_query("SET NAMES 'utf-8'");
danach wieder umstellen auf:
mysql_query("SET NAMES 'latin1'");

HTML Contynt-Type steht auf: iso-8859-1

Warum verstehe ich noch nciht, aber es klappt immerhin.
Ich wäre Froh, wenn jemand eine Erklärung dafür hätte.

Danke nochmal an godlie, du hast mir sehr geholfen

Mit freundlichen Grüßen
Yannick
Bitte warten ..
Mitglied: dog
24.10.2010 um 19:08 Uhr
mysql_query("SET NAMES 'utf8'");

Und wenn du dir die PHP-Doku durchliest wirst du ganz schnell sehen, dass dort von genau diesem Query explizit abgeraten wird.
Alles was der macht, ist den MySQL-Client in einen undefinierten Status zu setzen, wo alles passieren kann.

http://de3.php.net/mysql_set_charset

Und man sollte schon durch die Bank weg den selben Zeichensatz benutzen, auch wenn "UTF-8 in ISO-8859-1" ein mittlerweile so verbreiteter Fehler ist, dass ihn manche Clients korrigieren können.

Noch was: substr und einige andere Funktionen sind nicht für Multibyte-Zeichensätze wie UTF-8 geeignet!

Und jetzt bitte mal die Standardlektüre zum Thema lesen: http://www.joelonsoftware.com/articles/Unicode.html
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Exchange Server
gelöst Exchange 2013 - Abwesenheitsnachricht Umlaute werden nicht dargestellt (3)

Frage von staybb zum Thema Exchange Server ...

Webbrowser
gelöst Daten in entfernte Mysql DB schreiben (3)

Frage von nullacht15 zum Thema Webbrowser ...

Linux
gelöst Umlaute zählen - Bash-Script (5)

Frage von plutowitsch zum Thema Linux ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (17)

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...