BuZ*_*dEE 25 java eclipse utf-8 properties-file
我有一个JavaEE项目,我在其中使用消息属性文件.这些文件的编码设置为UTF-8.在文件我用的是德国的变音似ä,ö,ü.问题是,有时这些字符会被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这样的其他编辑器来编辑这些消息属性文件,我不会遇到这个问题.
我也在一个案例中意识到,如果我browser.searchForSimilarImages=ähnliche从Git diff 复制原始值并用browser.searchForSimilarImages=\uFFFD\uFFFDhnlicheEclipse 替换错误的值,那么我在消息属性文件中有正确的变音符号.
hag*_*wal 31
默认情况下,ISO 8859-1字符编码用于Eclipse属性文件(在此处阅读),因此如果文件包含ISO 8859-1之外的任何字符,则不会按预期处理它.
如果您使用Eclipse,那么您会注意到它隐式地将特殊字符转换为\ uXXXX等效字符.尝试复制
会意字/会意字
到Eclipse中打开的属性文件中.
编辑:根据OP的评论
更新Eclipse的编码,如下所示.如果您将编码设置为UTF-32,那么即使您可以看到中文字符,您通常也看不到.
如何在Eclipse中更改属性文件的编码:有关更多详细信息,请参阅此 Eclipse Bugzilla错误,其中讨论了其他几种可能性,最后建议我在下面突出显示的内容.

正确设置编码后,可以在Eclipse中看到中文字符:

如果上面不能一致地为你工作(它确实对我有效,我从来没有看到编码问题),那么尝试使用一些处理属性或其他文件编码的Eclipse插件.例如Eclipse ResourceBundle Editor或Extended Resource-Bundle编辑器
我建议使用Eclipse ResourceBundle Editor.
更改文件编码的另一种可能性是使用Edit --> Set Encoding选项.这非常重要,因为它会更改默认字符集和文件编码.通过使用Edit --> Set Encoding选项更改编码来进行操作,并执行以下Java sysout System.out.println("Default Charset=" + Charset.defaultCharset());和System.out.println(System.getProperty("file.encoding"));
暂且不说:1
使用native2ascii - Native-to-ASCII Converter处理属性文件以使内容具有ISO 8859-1字符编码
什么native2ascii的作用:它把所有的非ISO 8859-1在其等效为\ uXXXX字符.这是一个很好的工具,因为你不需要搜索\ uXXXX等效的特殊字符.
UTF-8的用法: native2ascii -encoding utf8 e:\a.txt e:\b.txt
暂且不说:2
每个计算机程序,无论是IDE,应用程序服务器,Web服务器,浏览器等,只能理解位,因此需要知道如何解释这些位以使其具有预期的意义,因为根据所使用的编码,相同的位可以表示不同的字符.而这就是"编码"通过给出一个唯一的标识符来表示一个角色,以便所有计算机程序,各种操作系统等知道解释它的正确方法.
因此,如果您使用某种编码方案写入文件,让我们说UTF-8,然后使用任何编辑器进行读取,但使用编码方案作为UTF-8运行,那么您可以期望得到正确的显示.
请阅读我的这个答案以获取更多详细信息,但从浏览器 - 服务器的角度来看.
属性文件预计采用ISO-8859-1 (Latin-1)编码。很可能这也是 eclipse 默认设置的。
您必须确保构建中运行的每个工具或其他工具都忽略规范并使用 UTF-8。
| 归档时间: | 
 | 
| 查看次数: | 31669 次 | 
| 最近记录: |