我在ASP站点编码中文时遇到问题。文件格式为:
test.asp正在阅读包含以下数据的translations.txt:
Help|ZH|帮助
Home|ZH|首页
test.asp在管道分隔符上拆分,如果用户包含带有ZH的cookie,它将显示此转换,否则它将恢复为Key值。
现在,我尝试了以下没有效果的事情:
添加元标记
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
设置Response.CharSet = "UTF-8"
Response.ContentType = "text/html"
translations.txt
中的文字肯定是UTF-8并且没有字节顺序标记 Scripting.OpenTextFile(<file>,<create>,<iomode>,<encoding>)
方法都会返回相同的错误文本。 以下是我想在中国展示的样本(ZH):
但显示以下内容:
这会发生所有经过测试的浏览器 - 谷歌浏览器,IE 7/8和Firefox 4.该字体肯定有一个中文分支的字形。另外,我确实安装了东方语言。
-
我尝试将原始值粘贴到HTML中,这确实有用(但请注意这是一个硬编码值)。
然而,这很奇怪。
首页 - (十六进制) - &gt; E9 A6 96 E9 A1 - (作为字符) - &gt;英哩-é¡μ
我缺少什么想法?
答案 0 :(得分:2)
为了读取UTF-8文件,您可能需要使用ADODB.Stream
对象。我并不声称自己是字符编码专家,但这个测试对我有用:
test.txt(保存为没有BOM的UTF-8):
首页
帮助
test.vbs
Option Explicit
Const adTypeText = 2
Const adReadLine = -2
Dim stream : Set stream = CreateObject("ADODB.Stream")
stream.Open
stream.Type = adTypeText
stream.Charset = "UTF-8"
stream.LoadFromFile "test.txt"
Do Until stream.EOS
WScript.Echo stream.ReadText(adReadLine)
Loop
stream.Close
答案 1 :(得分:0)
无论是阅读translations.txt
文件的过程的哪一部分,似乎都不明白该文件是UTF-8。看起来它正在以其他编码方式读取它。您应该在打开和读取该文件的任何进程中指定编码。这与您的网页编码不同。
在该文件的开头插入字节顺序标记也可能是一种解决方案。
答案 2 :(得分:0)
Scripting.OpenTextFile
完全不了解UTF-8。它只能读取当前的OEM编码或Unicode。从一些字符集使用的字节数可以看出,UTF-8的效率非常低。我会为这类数据推荐Unicode。
您应该将文件保存为Unicode(在Windows用语中),然后使用以下命令打开:
Dim stream : Set stream = Scripting.OpenTextFile(yourFilePath, 1, false, -1)
答案 3 :(得分:0)
只需使用页面顶部的以下脚本
即可Response.CodePage=65001
Response.CharSet="UTF-8"