你是如何让ASP.NET输出UTF-16编码的文本的?

时间:2009-02-03 00:09:12

标签: .net asp.net xml utf-16 ashx

你是如何让ASP.NET输出UTF-16编码文本的?

我在.NET中序列化一个对象,默认情况下是UTF-16格式。现在我想将字符串作为输出响应发送到.ashx请求。

我收到错误: 从当前编码切换到不支持的指定编码。处理资源时出错

如何告诉我的网站或网页使用UTF-16格式。

感谢。

更新:阅读这两个答案。

3 个答案:

答案 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。