我有一个JavaEE项目,其中我使用消息属性文件。这些文件的编码设置为UTF-8。文件中我使用了德语umlauts,例如ä
,ö
,ü
。问题是,有时这些字符被替换为Unicode,例如\uFFFD\uFFFD
,但并非每个字符都会出现这种情况。现在,我遇到了一个情况,其中ä
和ü
都被替换为\uFFFD\uFFFD
,但不是每个ä
和ü
都会出现这种情况。
Git diff向我展示了类似以下的内容:
mail.adresses=E-Mail hinzufügen:
-mail.adresses.multiple=E-Mails durch Kommata getrennt hinzufügen.
+mail.adresses.multiple=E-Mails durch Kommata getrennt hinzuf\uFFFD\uFFFDgen.
mail.title=Einladungs-E-Mail
box.preview=Vorschau
box.share.text=Sie können jetzt die ausgewählten Bilder mit Ihren Freunden teilen.
@@ -6880,7 +6880,7 @@ browser.cancel=Abbrechen
browser.selectImage=übernehmen
browser.starImage=merken
browser.removeImage=Löschen
-browser.searchForSimilarImages=ähnliche
+browser.searchForSimilarImages=\uFFFD\uFFFDhnliche
browser.clear_drop_box=löschen
此外,还有一些行发生了改变,但我没有触及它们。我不明白为什么会出现这样的行为。以上问题可能的原因是什么?
我的系统:
Antergos / Arch Linux
系统编码为UTF-8
Python 3.5.0 (default, Sep 20 2015, 11:28:25)
[GCC 5.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
Eclipse Mars 1
如果我使用另一个编辑器(如Atom)来编辑这些消息属性文件,则不会遇到此问题。
我还意识到,在某些情况下,如果我从Git diff中复制原始值browser.searchForSimilarImages=ähnliche
并将错误的值browser.searchForSimilarImages=\uFFFD\uFFFDhnliche
在Eclipse中替换为该值,则属性文件中的umlauts就是正确的。
new String(value.getBytes("ISO-8859-1"), "UTF-8");
以使其在属性文件中正确? - BuZZ-dEE