我在我的多语种网站上使用资源文件显示html内容(如标签名称)。不同国家的资源文件不同。网站建立在Asp.Net MVC3上。
我正在显示一条javascript警报,其消息是从资源文件中选取的,如下所示: 警报( '@ Resources.Areas.Admin.Views.Program.Local.Create.msgDate3'); 现在在msgDate3的资源文件中,我有法语文本为“La fecha deiniciodeberásermenor que la fechadepérmino” 网站上的此警报显示为“La fecha deiniciodeberáseruemenor que la fechadepérmino”,其中“á”和“é”未正确显示。 如何显示这些特殊字符?
我也有其他语言的数据,这些字符会出现类似的问题。如何显示它们?
编辑: -
(在我的app中,英文资源文件被命名为“cshtmlfilename.resx”,例如create.resx和其他文化资源文件被命名为“cshtmlfilename.culturename.resx”,例如create.es-MX.resx)
我发现我的网页的javascript代码打破了我以alert('@Html.Raw(Resources.Areas.Admin.Views.Program.Local.Create.msgDate2)');
格式放置在页面中的提醒
其中'Create.msgDate2'指的是资源文件Create.resx的密钥msgDate2。
firebug中的break msg出现在`
未终止的字符串文字 [在此错误中打破]警报('ควรจะลงวันที่ที่เริ่มก่อนวันสุดท้ายของการสิ้นสุด (这是我为泰国获得的消息(第th个) 当我修改msgDate2的翻译时,脚本工作正常。我确定一些问题正在发生,这种语言的字符正在使javascript停止。 任何解决方案??
答案 0 :(得分:1)
使用Html.Raw来避免字符串编码:
alert('@Html.Raw(Resources.Areas.Admin.Views.Program.Local.Create.msgDate3)');
像Html.LabelFor(..)这样的Htmlhelpers返回一个IHtmlString,它在视图中没有像常规字符串那样编码,所以这就是你没有标签问题的原因。
答案 1 :(得分:0)
这会发生什么样的浏览器?您能否发布HTML文件的Head元素。我想你可能会错过编码的元标记。尝试将以下内容添加到头部:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">