【问题标题】:How to return string with accent from controller to View via Ajax JSon如何通过 Ajax JSon 从控制器返回带重音的字符串到视图
【发布时间】:2014-09-22 17:27:16
【问题描述】:

我的问题是从控制器返回并通过 JsonResult 查看的单词正在失去它们的重音,而不是重音,而是被转换为符号。

“Finalizar_Saída”这个词被错误地渲染成这样 =“Finalizar_Sa�da”。

我最初的回电:

return Json(Object);

我已经尝试过这样的事情:

Add in HTML page:
< META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="@Url.Content("~/path/fileName.js")" type="text/javascript" charset="utf-8"></script> 

在文档中添加javascript:

contentType: "application/json; charset=ISO-8859-1",
dataType: "json",

在 web.config 中添加此文本:

<globalization culture="pt-BR" uiCulture="pt-BR" requestEncoding="iso-8859-1" responseEncoding="iso-8859-1" fileEncoding="iso-8859-1" />

<globalization enableClientBasedCulture="false" requestEncoding="utf-8" responseEncoding="utf-8" fileEncoding="utf-8"
      responseHeaderEncoding="utf-8"  enableBestFitResponseEncoding="true" culture="es-MX" uiCulture="es-MX"/>

在 C# 中添加:

我已经像这样更改了返回调用:

Json(Object, "application/json", Encoding.UTF8); 

有人知道解决这个问题的方法吗?

【问题讨论】:

  • 为什么不在 contentType 中使用 utf-8?或者只是从 contentType 属性中删除 charset=ISO-8859-1

标签: c# javascript json asp.net-mvc-3 non-ascii-characters


【解决方案1】:

这是一种方式,不一定是伟大方式:

您可以使用找到的 HTML 编码存储带有所需字符的字符串

here

这些名称在代码/数据库中可能不再是人类可读的,但应该在浏览器中正确显示。您可以想象以 UTF-aware 语言解析字符串,并使用其本机编码/解码函数与正则表达式结合使用 HTML 代码替换 unicode 字符,这甚至可以在发送到客户端 AJAX 请求之前即时完成。

【讨论】:

    【解决方案2】:

    抱歉,问题不在于呈现文本的方式,而在于我阅读信息的方式。

    我正在从一个文件中读取信息,在我们的例子中是一个由 log4net 生成的文件。

    问题是log4net是用ansi标准写的,我们以为是utf8标准,

    解决方案是使用以下调用将读取模式更改为 ansi 标准:

    Encoding.Default.GetString(buffer).
    

    现在可以了。

    无论如何,谢谢。

    【讨论】:

      猜你喜欢
      • 2016-11-24
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多