Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.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
经典ASP-如何将UTF-8字符串转换为UCS-2?_Utf 8_Asp Classic - Fatal编程技术网

经典ASP-如何将UTF-8字符串转换为UCS-2?

经典ASP-如何将UTF-8字符串转换为UCS-2?,utf-8,asp-classic,Utf 8,Asp Classic,我在SQL Server中将UTF-8字符串存储为UCS-2时遇到问题。当我把它拉出来显示在内容类型设置为UTF-8的页面上时,它工作正常。但是我有一个第三方Javascript组件,当我向它传递数据库的字符串时,它会将其呈现为USC2。或者不是UTF8 在ASP中,从数据库读取该字符串并将其传递给第三方组件(模糊化)后,是否有方法将其转换为UTF-8 希望这有意义。Encoding.UTF8和Encoding.Unicode将提供足够的功能。有关更多信息,请参见我怀疑您与经典表单post字符编

我在SQL Server中将UTF-8字符串存储为UCS-2时遇到问题。当我把它拉出来显示在内容类型设置为UTF-8的页面上时,它工作正常。但是我有一个第三方Javascript组件,当我向它传递数据库的字符串时,它会将其呈现为USC2。或者不是UTF8

在ASP中,从数据库读取该字符串并将其传递给第三方组件(模糊化)后,是否有方法将其转换为UTF-8


希望这有意义。

Encoding.UTF8和Encoding.Unicode将提供足够的功能。有关更多信息,请参见

我怀疑您与经典表单post字符编码不匹配问题有冲突

事情是这样的:-

  • 您有一个使用UTF-8编码呈现给客户机的表单
  • 因此,浏览器使用UTF-8编码将输入的文本值发布到表单中
  • 接收帖子的操作页面将其Response.Codepage设置为典型的OEM代码页,如1252
  • 服务器将发布的UTF-8字符串的每个字节视为单个字符,而不是将UTF-8编码的字节集解码为正确的unicode字符
  • 字符串与现在已损坏的字符一起存储在数据库中
  • 页面希望向客户端显示包含损坏字符的DB字段的内容
  • 页面将其字符集设置为UTF-8,但其Response.CodePage仍保留在OEM代码页上,如1252
  • Write用于将字段内容发送到客户端,unicode字符被转换回ealier post中接收到的逐字节集
  • 客户端认为它得到了UTF-8,因此它将从服务器接收到的字符解码为UTF-8,就像它们最初一样,因此它们正确地显示在屏幕上
  • 一切进展顺利,仿佛一切都很好,而这些字符只是被弹回来回通过ASP。一个页面中的bug在另一个页面中有一个匹配的bug(可能是同一个页面),这使得一切看起来都很好
如果直接使用SQL server工具检查字段内容,则可能会在其中看到损坏的字符串。现在,您希望将此字符串与另一个组件一起使用,该组件需要一个直接的unicode字符串,这就是您发现此错误的地方


解决方案是始终确保所有页面不仅在响应中发送CharSet=“UTF-8”,而且在使用response.Write和尝试读取任何请求之前使用response.CodePage=65001。在三年后使用代码页指令…真棒的答案!我知道我“犯了典型的表单后字符编码不匹配问题”,但我不知道这是在哪里发生的。如果我能强迫这成为公认的答案,我会的。非常感谢,完美的解决方案在我的情况下应该指出,使用
ConvertFromUTF8()
函数只能用于纠正损坏的数据。开发人员仍应确保他们更正站点以使用正确的编码,并首先避免编码不匹配。