Web服务器正在发送回两个不同的响应。
一个响应是正确的,并且可能获取正确的字符代码。
另一个响应没有正确的字符代码。
不正确源代码如下所示: 名称愀测试
正确的源代码如下所示: 名称测试。
如果我刷新10次,大多数情况下会出现撇号。出现“中文”字符的一到两次。我知道字符代码是相同的,并且字符集可能变得愚蠢。能够刷新并获得或使我感到难过。
我知道有不同的字符集。
btw :适用于那些希望获得出色字符集历史参考的人。 https://www.smashingmagazine.com/2012/06/all-about-unicode-utf8-character-sets/
ASP生成的页面。
服务器是IIS。
请求设置为utf-8。
响应编码为utf-8。
文件编码为Windows-1252。
文化:不变
UI文化:不变
ASP.NET支持版本为4.5.2
后端是MS Access数据库。 (客户的选择不属于我)。
我可以可靠地重现该问题。
我该如何解决?
这是服务器设置吗?
其他线程表示禁用压缩并检查标题。什么是正确的建议。
任何帮助将不胜感激!任何有关未来调试的技巧都将受到赞赏。
答案 0 :(得分:0)
ASP文件正在设置语言:
<%@ Language=VBScript LCID=1033 CODEPAGE = 1252%>
此字符编码是ISO 8859-1的超集。它是拉丁字母的单字节字符编码,默认情况下在Microsoft的旧版组件中使用。
有一个Apache反向代理将流量传递给Windows服务器
<Location "/SomeFolder/">
ProxyPass "http://someurl.com/SomeFolder/"
ProxyPassReverse "http://someurl.com/SomeFolder/"
RequestHeader unset Accept-Encoding
AddDefaultCharset ISO-8859-1
</Location>
启用显式反向代理选项可以使字符编码正确通过。