奇怪的字符输出

问题描述:

asp.net MVC页

有时(随机地)我的asp.net MVC应用程序输出页上,其中单个字符被替换为怪异问号,使图像奇怪的字符输出

enter image description here

此现象如图所示在数据改变之前是恒定的,并且在页面刷新时它不会消失。整个页面在格鲁吉亚unicode。我使用Visual Studio 2010和iis express来使用asp.net mvc 3。在发布的站点上也会观察到IIS 7.5。我在asp.net webforms应用程序中也见过类似的问题。

我观察到这种行为不仅对数据库提供的数据,但简单的锚,用HTML辅助

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,并且它不能用于禁用的缓冲区输出 - 不在页面上引用scipt或样式表。

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

+0

的一部分列出你能瑞普问题?你能显示一些代码吗? – 2012-04-26 08:01:29

+0

@DarinDimitrov我很困惑,因为我不知道要显示什么代码。我只是从我的动作返回View(viewModel),就像我为应用中的所有动作一样。这种情况出乎意料地发生。数据更改时,相同的操作,相同的视图不包含此错误。 – archil 2012-04-26 08:05:14

+0

你是否从数据库中获取这些数据? – Aristos 2012-04-26 08:07:23

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

我的意见:

  1. 它仅出现与远程请求。本地请求总是可以的。
  2. 问号的位置对所有客户端,浏览器和计算机而言都是恒定的。
  3. 只有在重新编译应用程序后,问号的位置才会更改。

我会想象这是关于字符集。当我尝试显示不属于特定字符集的字符时,我遇到了这个问题。

如UTF-8中的’ or – (’ or –)当字符先前未被HTML编码时。

+0

整个应用程序的工作方式。在意外情况下会出现此行为。 – archil 2012-04-26 16:45:17

我也有这样的输出。在我的情况下,错误的来源是在Views/web.config中。的组件在页面/命名空间,这是不是引用的程序集