Javascript转换法语特殊字符

时间:2014-02-04 09:47:13

标签: javascript asp.net-mvc-3 unicode-string

在我的MVC 3应用程序中,我有几个带有消息字符串的resx文件,例如:"Editer groupe détails"。所有这些都用于窗口标题或确认/警报消息。因此,为了能够在我的各种.js文件中使用它们,我在我的母版页中创建了一个名为localizedRessources的Javascript对象。问题是字符串在此对象中被更改,例如,上面提到的字符串变为"Editer groupe détails"

我有什么选择?是否有一个特殊的函数告诉JS不要编码这些?有没有办法直接使用我的.js文件中的字符串? (顺便说一句,这在某些情况下是有效的,但我宁愿在我的cshtml文件中没有太多的js代码)。

我为所有网页添加了<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">标记<head>元素,所以我很好。 欢迎提出任何建议。

1 个答案:

答案 0 :(得分:5)

根据你的评论

<script type="text/javascript" charset="utf-8">
/*...*/
var localizedResources = { 
   FailedUploadErrorMessage: '@Resources.GeneralLocalization.FailedUploadErrorMessage'
/*...*/ 

您尝试使用ASP.NET MVC Razor渲染javaScript。通常Razor会将特殊字符转义为实体,例如&正在成为&amp;é实体&#233;变为\u00E9。在javaScript中,您需要UTF-8/16中的本机字符(或者如果真的不可能编码为@)。

在Razor中,<script type="text/javascript" charset="utf-8"> /*...*/ var localizedResources = { FailedUploadErrorMessage: '@Html.Raw(Resources.GeneralLocalization.FailedUploadErrorMessage)' /*...*/ 使渲染引擎以HTML格式输出编码的,转义的,实体化的表示。

渲染javaScript时,你不希望Razors隐式转义,所以你需要的是

{{1}}

并且oops:还javaScript is UTF-16(有一些警告)