1

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

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

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

4

1 回答 1

3

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

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

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

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

于 2012-07-25T12:21:43.140 回答