如何知道PHP在向浏览器发送数据时将使用哪种编码?即使用Cotent-Type标头,例如:iso-8859-1。
答案 0 :(得分:1)
您可以使用William建议的header()解决方案,但是如果您正在运行Apache,并且Apache配置使用默认字符集,那么每次都会获胜(Internet Explorer会发疯)请参阅:AddDefaultCharset
答案 1 :(得分:1)
请记住,内容类型和编码是两回事。 text / html是一种内容类型; ISO-8859-1和UTF-8是编码。
服务器发送的HTTP响应头通常如下所示:
Content-Type: text/html; charset=utf-8
“charset”实际上是字符编码。它不在一个单独的标题中;但是有一个名为“Content-Encoding”的标题实际上指定了响应使用的压缩类型(例如gzip)。
如果要在包含HTML的文件中将字符编码更改为UTF-8:
<?
header("Content-Type: text/html; charset=utf-8");
答案 2 :(得分:1)
通常,网络主机的Apache + PHP服务器配置为发送 NO charset
标题。
测试服务器配置方式的最短方法是:
charset
,则表示您的服务器正在使用它,通常它不会包含charset
。<?php echo ini_get('default_charset'); ?>
如上所述,这通常会打印出一个空字符串,如果不同,它会显示PHP的charset
。第二个解决方案是假设Apache没有配置AddDefaultCharset some_charset
,但通常情况并非如此,但在这种情况下,我担心Apache设置可能会覆盖PHP deafult_charset ini指令。
答案 3 :(得分:0)
您可以使用header('Content-type: xxx/yyy');
设置自己的内容,但我相信默认情况下会发送text / html。
答案 4 :(得分:0)
AFAIK,PHP按字节顺序发送字符串。也就是说,如果您的变量包含UTF-8,它将发送UTF-8。如果你有iso-8859-1,它也会发送它。如果你混合它们,它就不会很漂亮。
答案 5 :(得分:0)
如果您的服务器未配置为具有默认内容或字符集,并且PHP也不是,PHP将仅发送Content-Type: text/html
- 它根本不会指定字符集,并将发送字节,因为它看到他们在剧本中。
如果浏览器收到没有指定字符集的页面,可能会发生各种各样的事情:
iso-8859-2
; YMMV)来呈现它us-ascii
如果使用此过程,PHP脚本的charset和浏览器的charset匹配,则文本将 - 意外 - 可读。如果没有,会有奇怪的迹象和类似的现象。