我创build了一个小型的Eclipse应用程序,只需通过System.out打印stringäÄß 。 当我在Eclipse中运行这个应用程序时,string在Eclipse控制台视图中被正确地打印出来。 但是,如果我生成一个包含这个应用程序的产品,并使用eclipsec.exe在windows上启动它,我会在控制台上看到a─▀ 。
产品定义是:
<configIni use="default"> </configIni> <launcherArgs> <programArgs>-consoleLog</programArgs> <vmArgsMac>-XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts</vmArgsMac> </launcherArgs> <windowImages/> <launcher> <solaris/> <win useIco="false"> <bmp/> </win> </launcher> <vm> </vm> <plugins> <plugin id="console-encoding"/> <plugin id="javax.transaction" fragment="true"/> <plugin id="org.eclipse.core.contenttype"/> <plugin id="org.eclipse.core.jobs"/> <plugin id="org.eclipse.core.runtime"/> <plugin id="org.eclipse.core.runtime.compatibility.registry" fragment="true"/> <plugin id="org.eclipse.equinox.app"/> <plugin id="org.eclipse.equinox.common"/> <plugin id="org.eclipse.equinox.preferences"/> <plugin id="org.eclipse.equinox.registry"/> <plugin id="org.eclipse.osgi"/> </plugins> <configurations> <plugin id="org.eclipse.core.runtime" autoStart="true" startLevel="0" /> </configurations>
我尝试将osgi.console.encoding的值osgi.console.encoding为Cp1252并将console.encoding也设置为Cp1252 。 我也尝试更改启动eclipse应用程序的命令提示符的代码页,但这也没有帮助。 当我在控制台上input德语变音符时,它们显示正确。
如何在“top”linux命令中执行控制台input?
使CreateProcessinheritance调用进程的控制台
编辑:我修改了应用程序也new BufferedReader(new InputStreamReader(system.in))读取一行,并打印出来。 当控制台的代码页被设置为Cp850我可以input并打印出来。 如果我附加一个debugging器,我看到在Eclipse中的input看起来像„Žá 。
我也尝试通过新的PrintStream(System.out,true,"Cp1252")显式指定编码,但是这并没有改变任何东西。
我正在使用Windows 7,以防万一。
FillConsoleOutputCharacter / WriteConsoleOutput和特殊字符
如何在不使用C中的system()的情况下清除win32 cmd控制台窗口?
Bash按正则expression式sorting
好吧,我假设你正在使用org.eclipse.ui.console.MessageConsole ,它扩展了IOConsole。 如果看一下IOConsole类,有一个getEncodingMethod() ,它返回从WorkbenchEncoding.getWorkbenchDefaultEncoding();获取的默认编码WorkbenchEncoding.getWorkbenchDefaultEncoding(); ,它是System.getProperty("file.encoding","UTF-8"); 。 所以,你可以尝试将属性“ file.encoding ”设置为所需的编码。 希望这可以帮助。
将德语变音器正确打印到控制台最简单的方法是使用System.console()及其提供的方法。
另一种方法是通过一个系统属性来配置外部使用的编码。 然后,应用程序必须使用该编码来创建必要的Writer,Readers和Streams。 对于Windows系统,这个编码必须是IBM850 。
问题是在Windows中默认编码Cp1252也用于System.out和system.in 。 但是Windows控制台使用codepage 850 (DOS时代遗留下来的codepage 850 ),这IBM850 Java中编码IBM850的代表。 由于Cp1252和IBM850不兼容,字符会混乱。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。