经典ASP将字符串转换为windows-1252

时间:2012-07-24 20:19:12

标签: asp-classic utf-8

我正在处理以UTF-8编码的POST请求。此POST请求负责在某个文件夹中创建文件。但是,当我查看俄语字符的文件名时,我看到文件名的垃圾值(文件内容正常)。文件名的英文字符是可以的。在脚本中我看到:

Set fsOBJ= Server.CreateObject("Scripting.FileSystemObject")
Set fsOBJ= fsObj.CreateTextFile(fsOBJ.BuildPath(Path, strFileName))

我相信'strFileName'是我的问题。 Windows似乎不喜欢UTF-8文件名。关于如何解决这个问题的任何想法。

1 个答案:

答案 0 :(得分:3)

VBScript字符串是严格的2字节unicode,在存储或传输字符串时使用的任何编码都会在VBScript中存在的字符串之前转换为unicode。

我的猜测是你有一个带有文件名的表格帖子,帖子编码为UTF-8。但是,在解码带有文件名的表单字段时,您的接收页面的CodePage设置为65001以外的值(UTF-8代码页)。因此,从表单中检索的字符串已损坏。

<%@ CODEPAGE=65001 %>添加到您的页面,在页面顶部加Response.CharSet = "UTF-8"并将其另存为UTF-8。

现在,当源表单将UTF-8编码的表单数据发布到页面时,表单数据将被解码为正确的unicode。