安全地将Java .properties文件中的字符串传递给JavaScript

时间:2015-09-02 23:21:31

标签: javascript java

我遇到了国际化的问题,需要知道前进的最佳方法。我们使用带有.properties文件的java ResourceBundle来国际化我们软件上的内容。有些区域会将动态值传递给JavaScript警报,例如

#.properties file with ca_ES locale
warningText=regles d’apostrofació

#JavaScript with the property as parameter
<script>
    alert('warningText');
</script>

因此warningText值中的撇号会转义字符串并导致致命错误。由于我们的编码标准,我们无法真正使用双引号,并且通过并将所有代码更改为双引号将是一大堆工作,我们无法使用类似{{{{{{ 1}}因为html标记无法在javascript警报内解析。

最后,如果在属性文件的字符串中我们做了类似的事情:

&quot;

在编译期间或在JVM或javascript之前的某个地方应用转义,我们最终只是转义字符串

1 个答案:

答案 0 :(得分:1)

您可以简单地将unicodes \uxxxx代替unicode字符用于浏览器也支持的属性文件,下面是regles d’apostrofació的unicodes:

#warningText=regles d’apostrofació
warningText=\u0072\u0065\u0067\u006c\u0065\u0073\u0020\u0064\u2019\u0061\u0070\u006f\u0073\u0074\u0072\u006f\u0066\u0061\u0063\u0069\u00f3

&#13;
&#13;
alert('\u0072\u0065\u0067\u006c\u0065\u0073\u0020\u0064\u2019\u0061\u0070\u006f\u0073\u0074\u0072\u006f\u0066\u0061\u0063\u0069\u00f3')
&#13;
&#13;
&#13;