我有一个正在从weblogic 8服务器部署的angular应用程序。然而,在UAT中,有一个html文件存在编码问题。我们在ng模式中有ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝ
用于验证,但当我们使用开发人员工具查看它时,其中一些工具被解释为□?.
我已经将html文件保存为UTF-8并运行Jenkins。作为构建过程的一部分,运行一个grunt命令,将所有js和htlm合并到一个文件中。对该文件的外观检查表明编码仍然良好。生成的.js文件是UTF-8,没有□?符号。
我认为UAT中的浏览器读取的文件是ISO-8895编码,而不是UTF-8编码。我找到了一个解决方案。通过将内容类型http头设置为"text/html; charset=utf-8"
,我可以强制浏览器使用正确的编码。我在weblogic 8中找不到设置这个头的配置,所以我做了以下servlet过滤器:
https://github.com/pacurtin/HttpHeaderFilterServlet/blob/master/src/com/paddycurtin/HttpHeaderFilter.java
这适用于weblogic中的tomcat和.dostruts文件,但不适用于.html文件。通过代码进行调试显示,头被设置为"text/html; charset=utf-8"
,但随后weblogic将其重置为"text/html"
。
有没有办法在weblogic 8中设置内容类型http头?或者一种阻止它用"text/html"
覆盖"text/html; charset=utf-8"
的方法?
这个servlet过滤器方法是否是处理这个编码问题的错误方法?
以下是如何在WebLogic服务器中进行编码的步骤
设置WebLogic服务器系统属性
您还可以为所有部署的WebLogicWeb指定字符集通过设置系统在WebLogic Server实例上部署的服务属性weblogic.webservice.i18n.charset等于字符集。在启动的脚本中设置此系统属性WebLogic服务器实例:
-Dweblogic.webservice.i18n.charset=utf-8
以下是如何在其他服务器中将UTF-8配置设置为默认值的更多信息这是关于如何在WebLogic中国际化的文档WebLogic的文档我希望这能有所帮助。如果脚本不起作用,请尝试将其添加到weblogic.xml
:
<charset-params>
<input-charset>
<resource-path>/*</resource-path>
<java-charset-name>UTF-8</java-charset-name>
</input-charset>
</charset-params>
查看此文档以了解weblogic.xml
的配置
weblogic.xml文档