GWT:字符编码umlauts

9
我想在标签中设置文本:
labelDemnaechst.setText(" Demnächst fällig:");

在应用程序的输出中,“ä”字符显示不正确。怎样才能正确地显示它们?

哪个浏览器?内容编码是什么?当您检查编译输出时,您看到了什么,是umlauts还是一些垃圾? - milan
Google Chrome,因为它是一个GWT应用程序。内容编码?在applicationname.gwt.xml文件中,我写了以下内容:我看了一个网上的示例项目,他们写的是"löschen"而不是"löschen" 这样可以运行... 对于umlauts "ä" "ü",我应该写什么呢? - Patricia Odermatt
5个回答

6
GWT假定所有源文件均使用UTF-8编码(如果您使用将其解释为Windows-1252或ISO-8859-1的编辑器打开,就会看到löschen)。
GWT还会生成UTF-8编码的文件,因此您的Web服务器应该将它们作为UTF-8提供(或者不指定任何编码,让浏览器“嗅探”),同时您的HTML主机页面也应该以UTF-8提供(最好在<head>的开头放置一个<meta charset=utf-8>)。
如果Java中的\u00E4在浏览器中正确显示,则您可能处于第一种情况,即源文件未使用UTF-8编码。
请参阅http://code.google.com/webtoolkit/doc/latest/FAQ_Troubleshooting.html#International_characters_don't_display_correctly。

谢谢,我编辑了我的答案,所以Java文件现在可以正确保存。 - Stefan

4

您需要将特殊字符编码为Unicode。您可以在这里找到代表性的Unicode字符列表。

你的示例应该像这样:

    labelDemnaechst.setText("Demn\u00E4lachst f\u00E4llig:");

希望这能帮到您,如果没有更好的解决方案。
附录:
感谢Thomas的提示,你需要改变eclipse保存源文件的格式。默认情况下它使用类似Cp1252的编码方式。如果你把它改为UTF-8,那么你的示例就可以正确运行了(所以Demnächst被正确地书写了)。
如果你右键点击文件-->首选项,你可以编辑保存格式。 enter image description here

1
你应该在项目或者(更好的选择)工作区级别上进行操作,而不是在文件级别下进行。 - Thomas Broyer
你知道在哪里可以更改设置,让所有新项目文件自动保存为UTF-8编码吗? - Stefan
@thomas-broyer:我不同意在工作区级别上执行此操作更好的观点。工作区设置是针对特定工作区的本地设置,这意味着具有不同设置(不幸的是,工作区设置不会默认为UTF-8)的其他项目成员将遇到问题。相比之下,当存储在项目级别时,这些设置将与所有项目成员共享版本控制。 - Stijn de Witt

2
要使整个工作区具有UTF-8编码,请转到Window -> Preferences。在弹出窗口中输入encoding。现在,您应该会看到Content Types、Workspace、CSS Files、HTML Files、XML Files等结果。在Content Types中,您可以在Default encoding文本框中输入UTF-8,在其他元素中,您只需在其各自的列表框中选择编码即可。
然后,请检查您的项目在Project -> Properties -> Resource中的编码。
详细说明和图片可以在此处找到: http://stijndewitt.wordpress.com/2010/05/05/unicode-utf-8-in-eclipse-java/ 干杯

这实际上是最好的答案。你真的应该在项目级别上设置编码,以确保它与其他项目成员共享。顺便感谢你链接到我的博客 :) - Stijn de Witt

0
我所做的是: 使用记事本(Windows资源管理器)打开文件, 并将其保存为UFT-8选项,而不是建议的ANSI。
将项目编码为UTF-8对我来说没有起作用。
祝好!

0

使用 iso-8859-1(西欧)字符集,而不是 UTF-8。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接