1

我们正在为学校做一个项目,该项目是强制性的三语(荷兰语、英语和法语),所以答案“改成英语不行”。

我们所有的类和资源文件都以 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

这将导致以下显示的字符串。

显示提供的资源包提取的结果

对于这个问题的解决方案,我将不胜感激

编辑

有关更多信息,我们正在使用 Swing 构建桌面应用程序。

4

2 回答 2

3

这是由于编码问题。

您在 UTF-8 编码字节上使用了错误的解码器(可能是 ISO-8859-1)。

这些字符串是否存储在文件中?你是如何加载文件的?通过Properties课堂?当PropertiesInputStream. 如果您正在使用Properties,请使用load(Reader)重载,切换到 XML 格式,或使用匹配的编码重新编写文件。此外,如果您Resource.getBundle()用于加载属性文件,则必须使用 ISO-8859-1 编码来写入该文件,转义任何非拉丁字符。

由于这是一个编码问题,因此如果您发布用于选择字符编码的代码将是最有帮助的。

于 2011-05-11T17:26:45.493 回答
2

您没有显示一些代码,您在其中读取了资源文件。但是,如果您在构造函数中使用带有 InputStream 的 PropertyResourceBundle,则 InputStream 必须以 ISO-8859-1 编码。在这种情况下,无法以 ISO-8859-1 编码表示的字符必须由 Unicode Escapes 表示。

您可以使用native2asciiorAnyEdit作为工具将属性转换为 unicode 转义,请参阅在 eclipse 项目中使用西里尔文 .properties 文件

于 2011-05-11T17:27:03.323 回答