php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 23.09.2008, 04:54  
Neuer Benutzer
 
Registriert seit: 23.09.2008
Beiträge: 2
MasterQ befindet sich auf einem aufstrebenden Ast
Standard PHP Default charset für Funktionen

Ich habe meine PHP Seite und mysql Datenbank auf Grund von Komplikationen komplett auf UTF-8 eingestellt. Nun bin ich auf das Problem gestoßen, obwohl PHP bsw. einen Umlaut aus der mysql Datenbank holen kann und im html dokument ohne neu codierung richtig darstellen kann, arbeiten funktionen wie htmlentities oder html_entity_decode immer noch standart mässig mit den charset: ISO-8859-1.
Sobald ich jedoch den optimalen Parameter eingebe wie hier:
$variable = html_entity_decode($variable, ENT_QUOTES, 'UTF-8');
funktioniert alles wunderbar.
Da meine Seite sehr groß und umfangreich ist und die optionalen parameter nicht gesetzt sind, möchte ich jedoch ungern alle funktionen umschreiben. Ausserdem scheint mir diese Lösung wenig elegant.

Also möchte ich probieren PHP so einzurichten das es als standardmässiges Charset für funktionen immer UTF-8 benutzt.

Die wichtige Zeilen aus meiner php.ini:
default_charset = "UTF-8"

Ich weiß einfach nicht weiter und google konnte mir nicht helfen von daher bin ich für jede Hilfe dankbar!
MasterQ ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 23.09.2008, 13:14  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.798
PHP-Kenntnisse:
Fortgeschritten
robo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblickrobo47 ist ein wunderbarer Anblick
Standard

Dann überprüfe mal ob dein Webserver ein charset mitschickt, z.b. mit wget (Paramater -dv) oder einem anderen Tool das dir die Header die dein Server sendet anzeigt.
robo47 ist offline   Mit Zitat antworten
Alt 23.09.2008, 13:21  
cortex
Gast
 
Beiträge: n/a
Standard

zitat aus dem aktuellen php-handbuch:

Zitat:
Wie bei htmlspecialchars() steht das optionale dritte Argument charset zur Verfügung, das den für die Konvertierung benötigten Zeichensatz definiert. Gegenwärtig wird standardmäßig der ISO-8859-1 Zeichensatz verwendet.
damit wirst du wohl nicht umhin kommen, deinen quellcode zu renovieren.

cx
  Mit Zitat antworten
Alt 25.09.2008, 03:20  
Neuer Benutzer
 
Registriert seit: 23.09.2008
Beiträge: 2
MasterQ befindet sich auf einem aufstrebenden Ast
Standard

Ich danke euch für eure Antworten. Was den wget vorschlag angeht so bin ich mir sicher das mein webserver UTF-8 versendet. Ich glaube cortex hat recht was die Sache angeht. Ich habe noch mal probiert den PHP Programm Quelltext umzuschreiben und neu zu compilieren so das die Funktionen standard mässig UTF-8 benutzen, aber auch das blieb ohne erfolg. Ist wohl auch keine besonders ISO konforme Lösung wenn es dann nur bei mir richtig laufen würde.
MasterQ ist offline   Mit Zitat antworten
Alt 02.01.2011, 05:23  
Neuer Benutzer
 
Registriert seit: 25.02.2010
Beiträge: 3
PHP-Kenntnisse:
Fortgeschritten
Froschkoenig84 befindet sich auf einem aufstrebenden Ast
Standard

Hast du das Problem inzwischen lösen können. Ich stehe vor einem ähnlichen Problem. Auch ich würde gerne komplett auf UTF-8 schalten, also APACHE+PHP+DB/MySQL, damit es beim internationalen Umgang diverser Charsets keine Probleme mehr gibt.

Aus der PHP-Logik heraus, müsste er ja bei jeder Funktion, die auf den Charset zurückgreift automatisch prüfen, wie der default_charset in der PHP.INI lautet und diesen dann auch standardmäßig verwenden. Hmmm... ich hab' das jetzt nicht geprüft, aber falls dem noch nicht so ist, welche Funktionen arbeitet dann alle gegen diese Logik?

In diesen Posts wurden bereits erwähnt:
- htmlspecialchars()
- htmlentities()
- html_entity_decode()

... die alle im dritten Argument den Charset: 'UTF-8' akzeptieren. Aber gibt es noch weitere Funktionen, auf die man achten muss, da sie nicht standardmäßig auf den default_charset achten?
Froschkoenig84 ist offline   Mit Zitat antworten
Alt 05.01.2011, 21:38  
Erfahrener Benutzer
 
Benutzerbild von fireweasel
 
Registriert seit: 20.03.2010
Beiträge: 469
PHP-Kenntnisse:
Fortgeschritten
fireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblickfireweasel ist ein Lichtblick
fireweasel eine Nachricht über ICQ schicken fireweasel eine Nachricht über AIM schicken fireweasel eine Nachricht über Yahoo! schicken fireweasel eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von Froschkoenig84 Beitrag anzeigen

Aus der PHP-Logik heraus, müsste er ja bei jeder Funktion, die auf den Charset zurückgreift automatisch prüfen, wie der default_charset in der PHP.INI lautet und diesen dann auch standardmäßig verwenden. ...
Häh? PHP verwendet intern keine bestimmte Kodierung. Es wird einfach alles als Binärstring verstanden. Wenn man jetzt bspw. einen in UTF-8-kodierten String aus einer Datenbank holt und den per echo() ausgibt, ändert PHP rein gar nichts an den Daten.

Dem Webbrowser dabei zu helfen, die Ausgaben auch als UTF-8 zu verstehen, ist deine Aufgabe: Sorge dafür, dass der entsprechende HTTP-Header gesendet wird und die XHTML|HTML-Datei die entsprechenden Meta-Informationen im Header-Teil eingebaut hat.

Zitat:
Hmmm... ich hab' das jetzt nicht geprüft, aber falls dem noch nicht so ist, welche Funktionen arbeitet dann alle gegen diese Logik?

In diesen Posts wurden bereits erwähnt:
- htmlspecialchars()
Htmlspecialchars() verändert nur Zeichen im ASCII-Range. Also kannst du bei UTF-8 den Encoding-Parameter auch weglassen. Möglicherweise ist das bei UCS2- oder UCS4-kodierten Web-Seiten anders. Aber wer versendet schon solche?

Htmlentities() und html_entity_decode() sind auf einer Website ohne erkennbaren Nutzen für mich, daher kann ich nicht sagen, ob ein charset-Parameter da einen Sinn ergibt.

Anders sieht es bei den String-Bearbeitungsfunktionen (speziell Vergleichsfunktionen) aus. Da gibt es einige, die tatsächlich "locale"-abhängig sind. Von denen würde ich die Finger lassen, weil niemand weiß, ob die auf zwei verschiedenen Servern zu einem gleichen Verhalten überredbar sind (von ASCII abgesehen). Um Unicode-Strings zu bearbeiten oder zu vergleichen, hat PHP ein Sammelsurium von im Laufe der Zeit zusammengestoppelten Funktionsbibliotheken wie iconv, mbstring, pcre (nur UTF-8 ) und intl zur Verfügung. Die Text-Ausgabefunktionen für OTF/TTF/Type1 der LibGD verstehen ebenfalls UTF-8.
__________________
Foreach ist auch eine Schleife!

Geändert von fireweasel (06.01.2011 um 16:57 Uhr).
fireweasel ist offline   Mit Zitat antworten
Alt 06.01.2011, 10:03  
Erfahrener Benutzer
 
Benutzerbild von tr0y
 
Registriert seit: 26.07.2010
Beiträge: 3.943
PHP-Kenntnisse:
Fortgeschritten
tr0y ist jedem bekannttr0y ist jedem bekannttr0y ist jedem bekannttr0y ist jedem bekannttr0y ist jedem bekannttr0y ist jedem bekannt
tr0y eine Nachricht über MSN schicken
Standard

http://www.w3.org/International/ques...charset.de.php
http://www.askapache.com/htaccess/se...-htaccess.html

Bedenke auch, falls du Meta-Notierungen oder XML-Encoding Notierungen im Veröffentlichten Quellcode deiner Webs hast, das diese auch verändert werden sollten.
__________________
The PHP echo-command is the most powerful weapon of the world. A simple string "Fuck you, <insert random chief of state>. Cheers, yours <insert random chief of other state>." delivered with that command can and will raise wars. So, be careful developer, be careful.
tr0y 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
PHP/MySQL: QCodo's Code-Generator Zergling-new Tutorials 2 09.05.2008 05:33
SELECT-Abfrage optimieren pz6j89 Datenbanken 14 17.04.2008 17:37
UTF8 Dump erzeugt nach import in UTF8 kod DB falsche Umlaute Carino Datenbanken 18 07.05.2007 23:49
Normalisierung einer chaotischen Tabelle maeck Datenbanken 10 12.12.2006 18:17
Gute Struktur heohni Datenbanken 5 29.05.2006 11:42
default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP Timo Trallala Datenbanken 2 06.02.2006 11:39
[Erledigt] Bestell-Tabelle ok? PHP-Fortgeschrittene 4 28.11.2005 21:35
PHPMyAdmin- Default Charset ändern Madden Datenbanken 0 28.11.2005 21:17
[Erledigt] kann keine Foreign Key Anlegen Datenbanken 1 17.10.2005 11:11
Problem mit mySQL Datenbanken 7 27.09.2005 12:06
PHP-Fehlermeldung, weiss nicht mehr weiter PHP Tipps 2005-2 12 21.09.2005 12:56
mysql dump einspielen (ohne phpmyadmin) PHP Tipps 2005-2 6 18.06.2005 21:50
[MySQL] Problem mit einer verschachtelten Abfrage aktionkuba Datenbanken 7 06.04.2005 14:07
löschen in einer datenbank PHP Tipps 2004 12 05.07.2004 00:19
[Erledigt] HILFE: Column count doesn't match value count at row 1 Datenbanken 17 12.06.2004 16:45

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php charset, php default charset, charset php, php default_charset, php.ini charset, php charset setzen, php set charset, default_charset php, php set default charset, default charset php, php ini charset, php default, default charset, php.ini default_charset, charset in php, php.ini mysql charset, php.ini default charset, http://php.net/default-charset, php default-charset, charset php.ini

Alle Zeitangaben in WEZ +1. Es ist jetzt 16:18 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