开发者

UTF-8Characters not displayed correctly in

we are working on a project for school, The project is mandatory tri-lingual (dutch, english and french) , so the answer "Change to English will not do".

All our classes and resource files are encoded in UTF-8 format, and alle non-standar english characters are diplayed correctly in the classes themself.

the problem is that once we try to display our text, all开发者_高级运维e non-standard english characters are distorted.

We hear alot that this is due to an encoding issue, but I sincerly doubt that, since our whole project is encode in UTF-8.

here is extract from the french resource bundle:

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

and this results in these following displayed strings.

display result for provided resourcebundle extract

I would be most gratefull for a solution for this problem

EDIT

for extra info we are building a desktop app using Swing.


This is due to an encoding issue.

You are using the wrong decoder (probably ISO-8859-1) on UTF-8 encoded bytes.

Are these strings stored in a file? How are you loading the file? Via the Properties class? The Properties class always applies ISO-8859-1 decoding when loading the plain text format from an InputStream. If you are using Properties, use the load(Reader) overload, switch to the XML format, or re-write the file with the matching encoding. Also, if you are using Resource.getBundle() to load a properties file, you must use ISO-8859-1 encoding to write that file, escaping any non-Latin characters.

Since this is an encoding issue, it would be most helpful if you posted the code you have used to select the character encoding.


You didn't show some code, where you read the resource files. But if you use PropertyResourceBundle with an InputStream in the constructor, the InputStream must be encoded in ISO-8859-1. In that case, characters that cannot be represented in ISO-8859-1 encoding must be represented by Unicode Escapes.

You can use native2ascii or AnyEdit as tools to convert Properties to unicode escapes, see Use cyrillic .properties file in eclipse project

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜