经典ASP-如何将UTF-8字符串转换为UCS-2?
我在SQL Server中将UTF-8字符串存储为UCS-2时遇到问题。当我把它拉出来显示在内容类型设置为UTF-8的页面上时,它工作正常。但是我有一个第三方Javascript组件,当我向它传递数据库的字符串时,它会将其呈现为USC2。或者不是UTF8 在ASP中,从数据库读取该字符串并将其传递给第三方组件(模糊化)后,是否有方法将其转换为UTF-8经典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字符编
希望这有意义。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(可能是同一个页面),这使得一切看起来都很好
解决方案是始终确保所有页面不仅在响应中发送CharSet=“UTF-8”,而且在使用response.Write和尝试读取任何请求之前使用response.CodePage=65001。在三年后使用代码页指令…真棒的答案!我知道我“犯了典型的表单后字符编码不匹配问题”,但我不知道这是在哪里发生的。如果我能强迫这成为公认的答案,我会的。非常感谢,完美的解决方案在我的情况下应该指出,使用
ConvertFromUTF8()
函数只能用于纠正损坏的数据。开发人员仍应确保他们更正站点以使用正确的编码,并首先避免编码不匹配。