2

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

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

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

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

谢谢。

更新:阅读两个答案。

4

3 回答 3

3

一般来说:不要。

作为 UTF-16 的网页混淆了许多工具,并使浏览器以奇怪的、意想不到的方式运行。(特别是:链接脚本、表单提交、代理)。UTF-16 只能作为二进制对象安全地提供,因此对于 Web 内容,坚持使用作为 ASCII 超集的编码 - 显而易见的选择是 UTF-8。

您引用的错误通常是您尝试读取其 <?xml encoding="..."?> prolog 与文件的实际编码冲突的 XML 文件时得到的错误。ASCII 编码的超集都不会发生冲突,因为“xml 编码”是 ASCII 并且在所有编码中都表示相同,但​​是如果您将 encoding="utf-16" 放在未保存为 UTF- 的 XML 文件中16,或者你没有把它放进去,那么解析器无法处理逻辑上的不可能性。

于 2009-02-03T02:27:00.643 回答
2

Response.ContentEncoding将属性更改为System.Text.Encoding.Unicode?

于 2009-02-03T00:35:15.437 回答
1

以下对我有用:

Dim utf16 = New UnicodeEncoding(False, True)
Response.BinaryWrite(utf16.GetPreamble)
Response.ContentEncoding = utf16

顺便说一句,我需要这样做,因为我正在向 Excel 发送一个包含 unicode 字符的 html 表。(我知道,这不是创建 Excel 文件的最佳方式!)

Excel(和 LibreOffice Calc)需要 utf-16 并且不适用于 utf-8。Excel 在开头也需要 UTF16 BOM,因此调用 GetPreamble。

于 2012-02-08T19:24:38.800 回答