我已经开发了一个在tomcat下运行的Java Web应用程序。 在开发服务器(Windows 10)上,我的浏览器接受法语字符。
但是,在生产服务器(Windows Server 2016)上,浏览器将法语字符替换为?
。即使从我的开发服务器访问生产Web应用程序时,编码仍然存在问题。
请问可能是什么问题?
答案 0 :(得分:0)
背景:对于法语,Windows-1252,MS Latin-1就足够了。有ISO-8859-1,正式的Latin-1,虽然没有 – (oe),但是具有æ(ae)。自从HTML5正式发布以来,浏览器会将ISO-8859-1解释为Windows-1252,这增加了复杂性。但是Java服务器的Writer仍需要使用Windows-1252。请注意,有缺陷的ISO-8859-1是HTTP的默认编码。但是,由于大多数法语字符都可以在ISO-8859-1中使用,所以这不应该是错误。
由于Java在内部使用String Unicode,所以切换到UTF-8似乎是最好的选择,因为它允许使用许多特殊符号和外来脚本。
该错误必须以某种方式来自默认编码,在法语Windows中,默认编码为Windows-1252,而在服务器上则可能为默认编码。文件系统或数据库,甚至是硬编码的字符串,在JSP中都说(jsp)编译器编码。 文本源自文件的位置,请确保由Reader指定文件的编码。如您所知,默认编码不适用于可移植文件。 不要使用FileReader / FileWriter,这是一种无法指定编码的旧实用程序类。