asp.net mvc页面输出奇怪的字符

时间:2012-04-26 08:00:30

标签: asp.net asp.net-mvc asp.net-mvc-3

有时(随机)我的asp.net mvc应用程序输出页面,其中单个字符被奇怪的问号替换,如图所示

enter image description here

此行为在数据更改之前保持不变,并且在页面刷新时不会消失。整个页面是格鲁吉亚的unicode。我正在使用asp.net mvc 3与visual studio 2010和iis express。这也发布在IIS 7.5的发布站点上。我也在asp.net webforms应用程序中看到了类似的问题。

我不仅在db提供的数据上观察到这种行为,而且使用html helper生成简单的锚点

TagBuilder addAnchor = new TagBuilder("a");
addAnchor.AddCssClass("add-item");
addAnchor.MergeAttribute("href", "#");
addAnchor.SetInnerText(SharedResources.Add); //resource item contains string დამატება

输出锚“დამატ ბა”

这不是浏览器端页面呈现的问题,因为原始响应已包含这些符号。

更新

看起来,通过设置Response.BufferOutput = false;来禁用缓冲区输出会从页面中删除奇怪的字符。但是我使用Cassette来引用bundle,它不能用于禁用的缓冲区输出 - 页面上没有引用scipts或样式表。

你们有没有人遇到过类似的问题?这对我来说实际上至关重要,因为目前它会影响数据,其中单个字符被损坏是多选测试问题的正确答案信息。

3 个答案:

答案 0 :(得分:3)

我有同样的错误。 Cassette具有重写结果HTML内容(并且需要将BufferOutput设置为true)的功能,以便在需要时将引用的脚本和样式表标记移动到顶部。 请参阅http://getcassette.net/documentation/configuration上的 IsHtmlRewritingEnabled 选项。 当我关闭此功能时,错误消失了。

我的观察:

  1. 仅在远程请求中出现。本地请求总是正常。
  2. 所有客户,浏览器和计算机的问号位置始终保持不变。
  3. 问号的位置仅在重新编译应用程序后才会更改。

答案 1 :(得分:0)

我认为这与字符集有关。当我试图显示一个不在特定字符集中的字符时,我遇到了这个问题。

如UTF-8中的’ or – (’ or –),如果该字符之前未进行过HTML编码。

答案 2 :(得分:0)

我也有这样的输出。在我的情况下,错误源是在Views / web.config中。程序集在页面/名称空间中列出,它不是引用程序集的一部分