Définition de L'encodage par défaut PHP en utf-8?
Dans le "PHP Cookbook", ils disent (p. 589) que pour définir correctement le codage de caractères des données sortantes en utf-8, Il est nécessaire d'éditer la configuration default_encoding
en utf-8.
Cependant, je ne trouve pas cette configuration dans php.ini
. Devrais - je simplement ajouter une ligne qui dirait default_encoding = "utf-8"
?
J'ai un ;default_charset = "iso-8859-1"
. Comme vous pouvez le voir (;
), pour le moment, il n'est pas activé. Dois-je supprimer le point-virgule et le définir sur "utf-8"
? Est - ce que cela prend en charge l'encodage par défaut?
J'ai aussi trouvé autres directives d'encodage dont je ne sais pas quoi faire:
[iconv]
;iconv.input_encoding = ISO-8859-1
;iconv.internal_encoding = ISO-8859-1
;iconv.output_encoding = ISO-8859-1
...
; http://php.net/exif.encode-unicode
;exif.encode_unicode = ISO-8859-15
...
;mssql.charset = "ISO-8859-1"
...
;exif.encode_unicode = ISO-8859-15
Y a-t-il une raison pour laquelle je ne devrais pas simplement les remplacer tous par utf-8
?
6 réponses
Vous devriez définir votre default_charset
sur UTF-8:
default_charset = "utf-8"
(PHP Cookbook peut avoir une faute de frappe s'ils vous demandent de changer le default_encoding
- Je n'en ai jamais entendu parler.)
Vous devez également vous assurer que votre serveur web est défini sur output UTF-8 Si vous voulez sortir des caractères codés UTF-8. Dans Apache, cela peut être défini par dans le httpd.fichier conf:
AddDefaultCharset UTF-8
Comme pour modifier le iconv
, exif
, et mssql
paramètres d'encodage, vous n'avez probablement pas besoin de les définir (vos paramètres ont ceux-ci ont commenté de toute façon) mais c'est une bonne idée de les changer tous en UTF-8 de toute façon.
Modifier la ligne
;default_charset = "iso-8859-1"
Lire
default_charset = "utf-8"
A propos des autres options, ne les touchez pas. Évitez les paramètres par défaut, définissez toujours explicitement l'encodage de dans tout ce que vous faites
- connexions à la base de données,
- lecture et écriture de fichiers,
- conversion avec iconv.
Aussi, méfiez-vous de l'encodage dans lequel vos fichiers PHP sont enregistrés, assurez-vous qu'ils sont en UTF-8, surtout s'ils contiennent des chaînes à afficher ou à comparer.
J'ai eu un problème sur ma requête mysql qu'il ne reconnaîtrait pas une acentuation latine, donc la requête échouerait. Je pensais que ce pourrait être le fichier php et ainsi de suite, jusqu'à ce que j'ai découvert qu'en utilisant pdo pour appeler le mysql, je devais ajouter le jeu de caractères. La chose étrange est que le serveur précédent, j'ai utilisé a bien fonctionné!
$dsn = 'mysql:host=localhost;dbname=retirodo_main;charset=utf8';
- - - - - - - - - - - - - - - - - - - - - - - - - ^^^^^^^^^^^^
Pour résoudre, j'ai changé "UTF-8" en "UTF-8" (sans le tiret), résolvant le problème à la place.
CentOS
Izaias Moura
Au niveau htaccess (.fichier htaccess) la directive php doit être php_value default_charset UTF-8
Changer à partir de *default_charset = "utf-8"* à *default_charset = "iso-8859-1"* fonctionne pour moi ( j'utilise le serveur web Apache et Linux OS). pour certaines raisons, lorsque j'utilise utf-8, certains caractères ne rendent pas bien. Ils changent soit à un signe carré ou un point d'interrogation en fonction du navigateur web utilisé.