wake-up-neo.com

Rahmen PHP Standardcodierung in UTF-8?

Im "PHP Cookbook" heißt es (S.589), dass zum korrekten Setzen der Zeichencodierung ausgehender Daten auf utf-8 die Konfiguration von default_encoding in utf-8 geändert werden muss.

Ich kann diese Konfiguration jedoch nicht in php.ini finden. Soll ich einfach eine Zeile hinzufügen, die default_encoding = "utf-8" sagt?

Ich habe einen ;default_charset = "iso-8859-1". Wie Sie sehen (;), ist es momentan nicht aktiviert. Soll ich das Semikolon entfernen und auf "utf-8" setzen? Kümmert sich das um die Standardcodierung?

Ich habe auch andere Kodierungsanweisungen gefunden, von denen ich nicht weiß, was ich tun soll:

[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

Gibt es einen Grund, warum ich sie nicht einfach durch utf-8 ersetzen sollte?

28
JDelage

Sie sollten Ihren default_charset auf UTF-8 setzen:

default_charset = "utf-8"

(Das PHP-Kochbuch enthält möglicherweise einen Tippfehler, wenn Sie aufgefordert werden, den default_encoding zu ändern. Ich habe noch nie davon gehört.)

Sie sollten auch sicherstellen, dass Ihr Webserver für die Ausgabe von UTF-8 konfiguriert ist, wenn Sie UTF-8-codierte Zeichen ausgeben möchten. In Apache kann dies in der Datei httpd.conf eingestellt werden:

AddDefaultCharset UTF-8

Wenn Sie die Kodierungseinstellungen iconv, exif und mssql ändern möchten, müssen Sie diese wahrscheinlich nicht festlegen (Ihre Einstellungen haben diese trotzdem auskommentiert), es ist jedoch eine gute Idee, sie trotzdem in UTF-8 zu ändern.

41
Ben D

Ändern Sie die Zeile

;default_charset = "iso-8859-1"

lesen

default_charset = "utf-8"

Berühren Sie die anderen Optionen nicht. Vermeiden Sie Standardeinstellungen, legen Sie die Kodierung bei allem, was Sie tun, explizit fest

  • datenbankverbindungen,
  • lesen und Schreiben von Dateien,
  • konvertierung mit iconv.

Beachten Sie auch die Kodierung, in der Ihre PHP -Dateien gespeichert werden. Stellen Sie sicher, dass sie in UTF-8 gespeichert sind, insbesondere wenn sie Zeichenfolgen enthalten, die angezeigt oder verglichen werden sollen.

7
gioele

Ich hatte bei meiner mysql-Abfrage ein Problem, dass keine lateinische Akzentuierung erkannt würde, sodass die Abfrage fehlschlagen würde. Ich dachte, es könnte die PHP-Datei sein und so weiter, bis ich herausfand, dass ich mit pdo den Mysql aufrufen musste, um den Zeichensatz hinzuzufügen. Das seltsame ist, dass der vorherige Server, den ich verwendete, gut funktioniert hat!

$dsn = 'mysql:Host=localhost;dbname=retirodo_main;charset=utf8';
- - - - - - - - - - - - - - - - - - - - - - - - - ^^^^^^^^^^^^
4
Miguel

Auf htaccess-Ebene (.htaccess-Datei) sollte die PHP-Direktive php_value default_charset UTF-8 sein.

0
ontananza

Um das Problem zu lösen, habe ich "UTF-8" in "UTF-8" (ohne Bindestrich) geändert und das Problem stattdessen gelöst.

CentOS

Izaias Moura

0
user7232321