Java 将非utf8符号输出到控制台

Java 将非utf8符号输出到控制台,java,encoding,console,jconsole,Java,Encoding,Console,Jconsole,我正在用Java编写非常简单的控制台应用程序 问题是我需要将西里尔语和爱沙尼亚语的非utf8符号输出到控制台,但在Windows中我得到了一堆奇怪的符号,而在MacOsX中我只得到????而不是更具可读性的东西 我怎样才能达到我的目标 --更新1-- 语言环境给了我: LANG= LC_COLLATE="C" LC_CTYPE="UTF-8" LC_MESSAGES="C" LC_MONETARY="C" LC_NUMERIC="C" LC_TIME="C" LC_ALL= 朗= LC_COLL

我正在用Java编写非常简单的控制台应用程序

问题是我需要将西里尔语和爱沙尼亚语的非utf8符号输出到控制台,但在Windows中我得到了一堆奇怪的符号,而在MacOsX中我只得到????而不是更具可读性的东西

我怎样才能达到我的目标

--更新1--

语言环境给了我:

LANG= LC_COLLATE="C" LC_CTYPE="UTF-8" LC_MESSAGES="C" LC_MONETARY="C" LC_NUMERIC="C" LC_TIME="C" LC_ALL= 朗= LC_COLLATE=“C” LC_CTYPE=“UTF-8” LC_MESSAGES=“C” LC_MONETARY=“C” LC_NUMERIC=“C” LC_TIME=“C” 立法会全体议员= 似乎我被UTF-8的东西困住了

奇怪的想法:


有没有办法从eclipse获取控制台并在eclipse之外使用它?

Windows终端:终端程序,
cmd.exe
,与操作系统的其余部分使用不同的编码,从Java您无法知道是否从终端运行。在运行程序之前,您必须将
cmd.exe使用的字体设置为Lucida Console,并使用
chcp
切换字体:

  • 西里尔语:使用
  • 爱沙尼亚人:也许你需要

OSX终端:据我所知,终端配置为UTF-8,所以您可以直接使用UTF-8。使用
locale
命令检查您的编码。

第一个想法:使用支持这些特定unicode值的字体可以为System.out.println()设置字体吗?Windows DOS命令提示符是一个非unicode程序:它只支持某些字体(右键单击左上角图标以访问其属性)这取决于您当前的语言设置。在Windows下,除了将非Unicode程序的当前语言修改为所需语言之外,您没有太多选择,但这是一个全局设置,您需要重新启动以获得MacOSX i8n支持:(2006年检索),您是在Mac上使用预编译类还是从源代码编译?如果您从源代码处编译,源文件的字符编码是什么
javac
将假定它是系统默认编码,utf-8。如果是不同的,则必须使用
-encoding
参数。否则编译器无法知道源文件包含哪些字符。好的,谢谢。至少我知道发生了什么。另外,请检查update please.chcp对于具有单字节字符集(如Windows-1251和Windows-1257)的代码页工作正常。但是,对于像CJK统一表意文字这样的双字节字符集,您仍然需要安装其多语言语言包来设置特定语言的系统代码页。否则,它将返回无效的代码页错误。