【问题标题】:Character set to send UK pound £ symbol to html client with webapi使用 webapi 将英镑符号发送到 html 客户端的字符集
【发布时间】:2015-07-14 22:34:40
【问题描述】:

在数据库中,我有一个带有 UK £ 符号的 NVARCHAR(100) 字段。我在 WebAPI 应用程序的 web.config 中添加了以下内容:

<configuration>
   <system.web>
      <globalization 
         requestEncoding="iso-8859-1"
         responseEncoding="iso-8859-1"/>
   </system.web>
</configuration>

在html页面中,我在html的头部添加了以下内容:

<meta http-equiv="Content-type" content="text/html;charset=ISO-8859-1">

我希望 £ 能够正确显示,但没有。它显示为 ?

在客户端,我不能使用字符串替换来将编码的 £ 替换为 &pound,因为我有很多带有这个符号的内容。

有什么想法吗?

更新:

这是我仍然看到的内容。根据这个page,它是一个替换字符。我复制了 notepad.exe 中的文本并尝试另存为 unicode html 页面,应用 ISO-8859-1 字符集,这也没有帮助。

【问题讨论】:

  • 您能确认一下保存时井号的编码是什么吗?
  • 我不知道使用的是什么编码。我在数据库中看到的是 £,而不是任何其他字符。在创建响应的 WebAPI 的退出位置之前,我在内容中看到 £。之后它变成了像这样的黑色菱形中的问号:en.wikipedia.org/wiki/Specials_(Unicode_block)

标签: asp.net-web-api encoding


【解决方案1】:

您应该能够使用 utf-8。

 <globalization requestEncoding="utf-8" responseEncoding="utf-8" culture="en-GB" uiCulture="en-GB" />

【讨论】:

  • 我使用 AngularJS {{:: vm.Content}} 来显示内容。 vm.Content 是从 WebAPI 返回的 JSON 字符串。
【解决方案2】:

问题与使用正确的 UTF-8 字符集有关。 WebAPI 默认使用 utf-8。

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Server: Microsoft-IIS/8.0
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcdGVtcFxUZXN0UG91bmRcVGVzdFBvdW5kXEFwaVxWYWx1ZXNcMQ==?=
X-Powered-By: ASP.NET
Date: Thu, 16 Jul 2015 21:25:24 GMT
Content-Length: 13

上面的响应将字符集显示为 utf-8。但是,这可以通过使用自定义 MediaTypeFormatter 来覆盖。我有一个自定义的 MediaTypeFormatter 在发送到客户端之前处理数据。删除自定义格式化程序后,我可以在浏览器中看到 £

【讨论】:

    猜你喜欢
    • 2013-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多