2011-05-27 107 views
1

嗨所有在phpinfo页面我发现字符集是UTF-8。 Content-Type text/html; charset = UTF-8 我想删除字符集以null在php.ini文件中更改是否可能。我如何设置默认字符集设置为空在PHP

+0

你有没有尝试标题(“Content-Type text/html; charset = ANY_THING_THAT_NOT_STANDARD_CHRSET”)? – MBarsi 2011-05-27 09:39:38

+1

没有这样的事情作为“空字符集”。 – Piskvor 2011-05-27 09:41:47

回答

1

如果您有权这样做,则可以在每个脚本的基础上override INI settings。否则,您可以简单地output an overriding headerheader("Content-type: text/html; charset=ISO-8859-1");或将其直接包含在您的HTML输出中作为<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1" />,显然,您可以随意替换ISO-8859-1。

+0

他想成为一无所有,没有utf8也没有iso-8859-1。这对我来说很奇怪,但无论如何... – RRStoyanov 2011-05-27 09:34:55

+0

是的,这对我很有用非常感谢你 – 2011-05-27 10:50:15

2

您可以在文件的顶部设置ini_set("default_charset", "");

1

可以输出头设置:

header('Content-type: text/html; charset=YOUR_CHARSET'); 

如果不设置这个头一个字符集,该浏览器将尝试猜测它自己不推荐。在西方国家,大部分时间猜测是ISO-8859-1或ISO-8859-15。

1
header('Content-Type: text/html'); // note the absence of charset= 

不过请注意,这没有什么,如“空字符集”,总有某种字节和字符之间的映射(甚至是ASCII是这样的映射,而不是自然秩序的东西)。你在做什么是告诉浏览器“我不知道这是什么字符,只是猜测” - 这可能会或可能不会选择实际的字符集。

3

A“空字符集”是相同的ISO-8859-1根据RFC 2616

当没有明确的字符集参数 由发送方提供的媒体“文本”类型的 亚型是 被定义为当经由HTTP接收到 时具有“ISO-8859-1”的默认字符集 值。

因此将字符集设置为ISO-8859-1与不设置任何字符集相同。但是,由于谷歌浏览器实施这个错误(他们默认为UTF-8),你应该考虑明确地设置字符集ISO-8859-1(或你使用的任何字符集)。

+0

这在理论上是正确的答案;请注意,由于无数的网页潦草,这在实践中并不完全正确;大多数浏览器都会进行某种字符集嗅探来确定可能的字符集。 – Piskvor 2011-05-27 09:47:23

+0

大多数浏览器在尝试嗅探字符集时都会错误,所以最好的选择仍然是明确设置它。 – 2011-05-27 09:48:18

+0

明确地设置它确实是最好的;但大部分嗅探实际上都能得到*正确*(因此用户甚至没有注意到)。然而,当启发式失败时,结果非常明显,这导致了“通常失败”的假设。是的,这是一种最后的回退措施,是的,服务器*应该*知道并宣传它使用的字符集。唉,仍然有破损的网站 - 用户认为这是破碎的浏览器*。 – Piskvor 2011-05-27 09:52:15