你是如何让ASP.NET输出UTF-16编码文本的?
我在.NET中序列化一个对象,默认情况下是UTF-16格式。现在我想将字符串作为输出响应发送到.ashx请求。
我收到错误: 从当前编码切换到不支持的指定编码。处理资源时出错
如何告诉我的网站或网页使用UTF-16格式。
感谢。
更新:阅读这两个答案。
答案 0 :(得分:3)
一般情况下:不要。
作为UTF-16的网页混淆了许多工具,并使浏览器以奇怪的,意想不到的方式运行。 (Esp。:链接脚本,表单提交,代理)。 UTF-16只能作为二进制对象安全地提供服务,因此对于Web内容坚持使用ASCII的超集编码 - 显然选择UTF-8。
您引用的错误通常是您尝试读取<?xml encoding =“...”的XML文件时得到的错误?> prolog与文件的实际编码冲突。由于'xml编码'是ASCII并且在所有这些编码中表示相同,所以ASCII编码的超编码都没有冲突,但是如果你将encoding =“utf-16”放在一个未保存为UTF的XML文件中16,或者你 时
答案 1 :(得分:2)
答案 2 :(得分:1)
以下对我有用:
Dim utf16 = New UnicodeEncoding(False, True)
Response.BinaryWrite(utf16.GetPreamble)
Response.ContentEncoding = utf16
顺便说一句,我需要这样做,因为我发送了一个包含unicode字符的html表到Excel。 (我知道,这不是创建Excel文件的最佳方式!)
Excel(和LibreOffice Calc)预计utf-16并不适用于utf-8。 Excel在开头也需要UTF16 BOM,因此调用GetPreamble。