在“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
替换它们吗?
答案 0 :(得分:42)
您应该将default_charset
设置为UTF-8:
default_charset = "utf-8"
(如果PHP Cookbook要求您更改default_encoding
- 我从未听说过它,可能会有拼写错误。)
如果您要输出UTF-8编码字符,您还需要确保将您的网络服务器设置为输出UTF-8。在Apache中,可以在httpd.conf文件中设置:
AddDefaultCharset UTF-8
至于修改iconv
,exif
和mssql
编码设置,您可能不需要设置这些设置(您的设置无论如何都会注释掉这些设置),但这样做很好无论如何都要将它们全部更改为UTF-8。
答案 1 :(得分:7)
修改行
;default_charset = "iso-8859-1"
阅读
default_charset = "utf-8"
关于其他选项,请勿触摸它们。避免默认设置,始终明确设置您所做的一切的编码
另外,请注意保存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浏览器,它们会更改为某个方形符号或问号。