我们正在为学校开展一个项目,该项目是强制性的三语(荷兰语,英语和法语),所以答案“改为英语不会”。
我们所有的课程和资源文件都以UTF-8格式编码,而且非标准的英语字符在他们自己的课程中正确显示。
问题是,一旦我们试图显示我们的文本,那么非标准的英文字符就会被扭曲。
我们听到很多这是由于编码问题,但我一直怀疑,因为我们的整个项目是用UTF-8编码的。
这里是法国资源包的摘录:
VIDEOSETTINGS = Réglages du Vidéo
SOUNDSETTINGS = Réglages du son
KEYBINDSETTINGS = Keybind Paramètres
LANGUAGESETTINGS = Paramètres de langue
DIFFICULTYSETTINGS = Paramètres de Difficulté
EXITSETTINGS = Sortie les paramètres
,这会产生以下显示的字符串。
display result for provided resourcebundle extract
我非常感谢这个问题的解决方案
修改
有关额外信息,我们正在使用Swing构建桌面应用程序。
答案 0 :(得分:3)
这是由于编码问题造成的。
你在UTF-8编码的字节上使用了错误的解码器(可能是ISO-8859-1)。
这些字符串是否存储在文件中?你是如何加载文件的?通过Properties
课程?从Properties
加载纯文本格式时,InputStream
类始终应用ISO-8859-1解码。如果您使用Properties
,请使用load(Reader)
重载,切换到XML格式,或使用匹配的编码重写该文件。此外,如果使用Resource.getBundle()
加载属性文件,则必须使用ISO-8859-1编码来编写该文件,并转义任何非拉丁字符。
由于这是一个编码问题,如果您发布了用于选择字符编码的代码,那将会非常有用。
答案 1 :(得分:2)
您没有显示一些代码,您可以在其中阅读资源文件。但是如果在构造函数中将PropertyResourceBundle与InputStream一起使用,则InputStream必须在ISO-8859-1中编码。在这种情况下,无法用ISO-8859-1编码表示的字符必须由Unicode Escapes表示。
您可以使用native2ascii
或AnyEdit
作为工具将属性转换为unicode转义符,
见Use cyrillic .properties file in eclipse project