有时(随机)我的asp.net mvc应用程序输出页面,其中单个字符被奇怪的问号替换,如图所示
此行为在数据更改之前保持不变,并且在页面刷新时不会消失。整个页面是格鲁吉亚的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或样式表。
你们有没有人遇到过类似的问题?这对我来说实际上至关重要,因为目前它会影响数据,其中单个字符被损坏是多选测试问题的正确答案信息。
答案 0 :(得分:3)
我有同样的错误。 Cassette具有重写结果HTML内容(并且需要将BufferOutput设置为true)的功能,以便在需要时将引用的脚本和样式表标记移动到顶部。 请参阅http://getcassette.net/documentation/configuration上的 IsHtmlRewritingEnabled 选项。 当我关闭此功能时,错误消失了。
我的观察:
答案 1 :(得分:0)
我认为这与字符集有关。当我试图显示一个不在特定字符集中的字符时,我遇到了这个问题。
如UTF-8中的’ or – (’ or –)
,如果该字符之前未进行过HTML编码。
答案 2 :(得分:0)
我也有这样的输出。在我的情况下,错误源是在Views / web.config中。程序集在页面/名称空间中列出,它不是引用程序集的一部分