<meta http-equiv="Content-type" content="text/html;charset=UTF-8" />
<meta name="description" content="@("Du lịch chữa bệnh ở Thái Lan là hình thức du lịch đẳng cấp kết hợp du lịch, spa và chữa bệnh")" />
为什么它会输出错误的unicode字符串
<meta name="description" content="Du lịch chữa bệnh ở Thái Lan là hình thức du lịch đẳng cấp kết hợp du lịch, spa và chữa bệnh" />
到目前为止,我尝试了新的HtmlString("Du lịch...")
或Html.Raw("Du...")
并且没有运气
这有什么问题?请给出建议。我正在使用asp.net mvc 5.0
没有@,它就可以正常工作了!
其他帖子的结果相同但没有答案,Disable encoding of unicode characters in ASP.NET-MVC3
答案 0 :(得分:1)
您可以在 ConfigureServices
方法中配置默认编码行为:
public void ConfigureServices(IServiceCollection services)
{
services.Configure<WebEncoderOptions>(options =>
{
options.TextEncoderSettings = new TextEncoderSettings(UnicodeRanges.All);
});
}
这将在 html 页面上呈现非编码的 unicode 字符。 来源https://github.com/aspnet/HttpAbstractions/issues/315
答案 1 :(得分:0)
这是因为html编码razor默认做html编码。试试这个
content =“@ Html.Raw(”DulịchchữabệnhởTháiLanlàhìnhthứcdulịchđẳngcấpkếthợpdulịch,spavàchữabệnh“)”
@ Html.Raw( “”);将输入字符串渲染为原始html
答案 2 :(得分:0)
字符串没有错。任何网络浏览器都会将á
读取为角色á
。在信息集方面,浏览器将解析为DOM,两行:
<meta name="description" content="Du lịch chữa bệnh ở Thái Lan là hình thức du lịch đẳng cấp kết hợp du lịch, spa và chữa bệnh" />
<meta name="description" content="Du lịch chữa bệnh ở Thái Lan là hình thức du lịch đẳng cấp kết hợp du lịch, spa và chữa bệnh" />
完全相同。
ASP.NET的默认HTML编码器选择为U + 0080到U + 00FF范围内的字符编写&#...;
字符引用而不是其他Unicode字符,这有点奇怪,但通常HTML编码器可以选择编码它所喜欢的任何字符,输出仍然是正确的。
nemesv在您链接的问题中的答案显示了如何通过覆盖encoderType
来改变此行为,但几乎没有任何理由需要关注。任何其他消耗输出的工具都不会将属性值中的á
和á
视为同一个字符。