Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Internet explorer IE和Firefox don';t显示UTF-8,而Chrome显示UTF-8_Internet Explorer_Firefox_Google Chrome_Jquery_Utf 8 - Fatal编程技术网

Internet explorer IE和Firefox don';t显示UTF-8,而Chrome显示UTF-8

Internet explorer IE和Firefox don';t显示UTF-8,而Chrome显示UTF-8,internet-explorer,firefox,google-chrome,jquery,utf-8,Internet Explorer,Firefox,Google Chrome,Jquery,Utf 8,我正在使用Zend框架。我尝试通过对操作使用Ajax请求来验证表单: $.ajax({ type: "POST", url: URL_TO_ACTION, data: DATA, success: function(result,status,xResponse) { var error = xResponse.getResponseHeader("error");

我正在使用Zend框架。我尝试通过对操作使用Ajax请求来验证表单:

$.ajax({
        type: "POST",
        url: URL_TO_ACTION,
        data: DATA,
        success: function(result,status,xResponse) {
                var error = xResponse.getResponseHeader("error");
                    alert(error);
                },
                error: function(e){
                    alert(e);
                }
      });
在控制器中,我有一个用于处理此问题的操作:

public function validateAction(){
    $response = $this->_response;
    $response->setHeader(
           "error","Hãy chọn một module"
        );      
}
在IE和Firefox中,它表示“HÃy chán mát模块”,而Chrome则表示“HÃy chán mát模块”ọn mộ“t模块”

在布局中,我有:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">


我在这里做错了什么?

听起来很明显,但是您是否清除了浏览器缓存,或者尝试了在Ajax请求中设置“cache:false”?

听起来很明显,但是您是否清除了浏览器缓存,或者尝试了在Ajax请求中设置“cache:false”?

HTTP头值编码与页面编码无关


特别是,标题值通常限制为ASCII,除非定义标题的规范说明RFC 2047适用。通过字节膨胀将字节转换为相应的Unicode代码点(这对于ASCII来说是正确的)将为您提供上面看到的IE和Firefox结果。

HTTP头值编码与页面编码无关


特别是,标题值通常限制为ASCII,除非定义标题的规范说明RFC 2047适用。通过字节膨胀将字节转换为相应的Unicode代码点(这对于ASCII来说是正确的)将为您提供上面看到的IE和Firefox结果。

不要依赖HTTP头来传输ASCII之外的任何内容。在实体正文中对错误消息进行编码

答案很长:

在我看来,这是HTTP标准中一个糟糕的领域。根据HTTP/1.1的标准

HTTP标头字段,包括通用标头(第4.5节)、请求标头(第5.3节)、响应标头(第6.2节)和实体标头(第7.1节)字段,遵循RFC 822[9]第3.1节中给出的通用格式

RFC 822说

3.1.2。标题字段的结构

展开字段后,可以将其视为由字段名、冒号(“:”)和字段正文组成,并以回车/换行符终止。字段名必须由可打印的ASCII字符组成(即值介于33.和126.之间的字符,十进制,冒号除外)。字段正文可以由除CR或LF之外的任何ASCII字符组成

因此,HTTP头是ASCII。然而,在本文档的前面,HTTP/1.1有这样一句话:

文本规则仅用于描述性字段内容和值,这些内容和值不打算由消息解析器解释。只有在根据RFC 2047[14]的规则进行编码时,*文本的字才能包含ISO-8859-1[22]以外的字符集中的字符

TEXT           = <any OCTET except CTLs,
                  but including LWS>
TEXT=
(第4.2节称标题由文本组成)

任何八位字节序列都不同于ASCII,文本“仅当根据ISO-8859-1编码时,才可能包含ISO-8859-1[22]以外的字符集中的字符”(在我看来)似乎间接地暗示了标题是ISO-8859-1。然而,这并没有那句话的全部重要:

只有在根据RFC 2047[14]的规则进行编码时,*文本的字才能包含ISO-8859-1[22]以外的字符集中的字符

TEXT           = <any OCTET except CTLs,
                  but including LWS>
实际上,RFC 2047为我们提供了一种将任何字符集中的任何字符串编码为ASCII的方法。(RFC 2047是电子邮件如何在主题行或发件人行中包含日语之类的内容。)


现在让我们来谈谈悲哀的部分:我认为没有任何主流浏览器实现RFC2047。正如您所看到的,Chrome将标题视为UTF-8,Firefox视为ISO-8859-1。您可以发送RFC 2047编码的文件,或者类似base64的文件,然后用javascript对其进行解码,但在这一点上,您也可以将其发送到正文中。

不要依赖HTTP头来传输ASCII以外的任何内容。在实体正文中对错误消息进行编码

答案很长:

在我看来,这是HTTP标准中一个糟糕的领域。根据HTTP/1.1的标准

HTTP标头字段,包括通用标头(第4.5节)、请求标头(第5.3节)、响应标头(第6.2节)和实体标头(第7.1节)字段,遵循RFC 822[9]第3.1节中给出的通用格式

RFC 822说

3.1.2。标题字段的结构

展开字段后,可以将其视为由字段名、冒号(“:”)和字段正文组成,并以回车/换行符终止。字段名必须由可打印的ASCII字符组成(即值介于33.和126.之间的字符,十进制,冒号除外)。字段正文可以由除CR或LF之外的任何ASCII字符组成

因此,HTTP头是ASCII。然而,在本文档的前面,HTTP/1.1有这样一句话:

文本规则仅用于描述性字段内容和值,这些内容和值不打算由消息解析器解释。只有在根据RFC 2047[14]的规则进行编码时,*文本的字才能包含ISO-8859-1[22]以外的字符集中的字符

TEXT           = <any OCTET except CTLs,
                  but including LWS>
TEXT=
(第4.2节称标题由文本组成)

任何八位字节序列都不同于ASCII,文本“仅当根据ISO-8859-1编码时,才可能包含ISO-8859-1[22]以外的字符集中的字符”(在我看来)似乎间接地暗示了标题是ISO-8859-1。然而,这并没有那句话的全部重要:

只有在根据RFC 2047[14]的规则进行编码时,*文本的字才能包含ISO-8859-1[22]以外的字符集中的字符

TEXT           = <any OCTET except CTLs,
                  but including LWS>
实际上,RFC 2047为我们提供了一种将任何字符集中的任何字符串编码为ASCII的方法。(RFC 2047是电子邮件如何在主题行或发件人行中包含日语之类的内容。)

现在让我们来谈谈悲哀的部分:我认为没有任何主流浏览器能够实现