在我的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>
元素,所以我很好。
欢迎提出任何建议。
答案 0 :(得分:5)
根据你的评论
<script type="text/javascript" charset="utf-8">
/*...*/
var localizedResources = {
FailedUploadErrorMessage: '@Resources.GeneralLocalization.FailedUploadErrorMessage'
/*...*/
您尝试使用ASP.NET MVC Razor渲染javaScript。通常Razor会将特殊字符转义为实体,例如&
正在成为&
非é
实体é
变为\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(有一些警告)