将PHP默认编码设置为utf-8?

时间:2012-02-19 18:02:37

标签: php unicode encoding character-encoding

在“PHP Cookbook”中,他们说(p.589)要正确设置传出数据的字符编码为utf-8,必须将default_encoding配置编辑为utf-8。

但是,我在php.ini中找不到此配置。我应该只添加一行default_encoding = "utf-8"

我有;default_charset = "iso-8859-1"。如您所见(;),现在它未被激活。我应该删除分号并将其设置为"utf-8"吗?这会照顾默认编码吗?

我还发现了其他编码指令,我不知道该怎么办:

[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

我有什么理由不能简单地用utf-8替换它们吗?

6 个答案:

答案 0 :(得分:42)

您应该将default_charset设置为UTF-8:

default_charset = "utf-8"

(如果PHP Cookbook要求您更改default_encoding - 我从未听说过它,可能会有拼写错误。)

如果您要输出UTF-8编码字符,您还需要确保将您的网络服务器设置为输出UTF-8。在Apache中,可以在httpd.conf文件中设置:

AddDefaultCharset UTF-8

至于修改iconvexifmssql编码设置,您可能不需要设置这些设置(您的设置无论如何都会注释掉这些设置),但这样做很好无论如何都要将它们全部更改为UTF-8。

答案 1 :(得分:7)

修改行

;default_charset = "iso-8859-1"

阅读

default_charset = "utf-8"

关于其他选项,请勿触摸它们。避免默认设置,始终明确设置您所做的一切的编码

  • 数据库连接,
  • 读写文件,
  • 使用iconv转换。

另外,请注意保存PHP文件的编码,确保它们是UTF-8,特别是如果它们包含要显示或比较的字符串。

答案 2 :(得分:4)

我的mysql查询出了问题,它无法识别某些拉丁语的acentuation,因此查询会失败。我以为它可能是php文件等等,直到我发现使用pdo调用mysql我必须添加charset。奇怪的是我以前使用过的服务器工作正常!

$dsn = 'mysql:host=localhost;dbname=retirodo_main;charset=utf8';
- - - - - - - - - - - - - - - - - - - - - - - - - ^^^^^^^^^^^^

答案 3 :(得分:0)

要解决我将“UTF-8”更改为“UTF-8”(没有破折号),而是解决问题。

CentOS的

Izaias Moura

答案 4 :(得分:0)

在htaccess级别(.htaccess文件),php指令应为php_value default_charset UTF-8

答案 5 :(得分:-2)

* default_charset =“utf-8”* 更改为 * default_charset =“iso-8859-1”* 适用于我(我使用的是Apache网络服务器和Linux OS)。由于某些原因,当我使用utf-8时,某些字符不能很好地呈现。根据所使用的Web浏览器,它们会更改为某个方形符号或问号。