2012-03-22 107 views
2

我正在用Java編寫非常簡單的控制檯應用程序。輸出non-utf8符號到控制檯

問題是我需要輸出西里爾文和愛沙尼亞語的非UTF8符號到控制檯,但在Windows中我得到一堆奇怪的符號,在MacOsX中我只得到????而不是更可讀的東西。

我該如何實現我的目標?

--update 1--

現場給我:

 
LANG= 
LC_COLLATE="C" 
LC_CTYPE="UTF-8" 
LC_MESSAGES="C" 
LC_MONETARY="C" 
LC_NUMERIC="C" 
LC_TIME="C" 
LC_ALL= 

看來我堅持與UTF-8的事情%)

奇怪的想法:

有沒有辦法從eclipse獲取控制檯並在eclipse之外使用它?

+1

首先想到:使用支持這些特定Unicode值的字體 – mre 2012-03-22 12:15:15

+0

是否可以爲System.out.println()設置字體? – 2012-03-22 12:21:13

+0

Windows DOS命令提示符是一個非Unicode程序:它只支持某些字體(右擊左上角的圖標來訪問它的屬性),這取決於您當前的語言設置。除了將非Unicode程序的當前**語言修改爲所需語言,您在Windows下沒有太多選擇,但這是一個全局設置,需要重新啓動http://technet.microsoft.com /en-us/library/cc721887(WS.10).aspx – ecle 2012-03-22 14:03:37

回答

1

Windows終端:終端程序cmd.exe不使用與其他操作系統相同的編碼,並且從Java中無法知道您是否從終端運行。你必須設置使用cmd.exe爲Lucida Console字體和運行程序之前切換"code page"chcp

OS X終端:據我所知終端配置爲UTF-8,所以你可以使用UTF-8。使用locale命令檢查您的編碼。

+0

好的,謝謝。至少我知道發生了什麼事。請檢查更新。 – 2012-03-22 14:17:21

+0

** chcp **適用於單字節字符集(如Windows-1251和Windows-1257)的代碼頁。但是,對於像CJK Unified Ideographs這樣的雙字節字符集,您仍然需要安裝其多語言語言包來設置特定語言的系統代碼頁。否則,它將返回**無效的代碼頁**錯誤。 – ecle 2012-03-22 14:47:38