2012-03-29 24 views
2

で「\ u0000の」、それはヌル文字を意味小さな広場を印刷します。
しかし、CLIで実行すると 'a'が表示されます。
それから、私は他のコンピュータでそれを実行し、あるものは「a」を、あるものはスペースをプリントします。印刷するJava

なぜこれが起こりますか?

私のOSはWindows 7 professional 32bitです。他のシステムはWindows XPです。
私のjavaバージョンはjdk_1.6.0update12です。

+0

コマンドプロンプトの文字エンコーディングとは何ですか? –

+3

Windowsコンソールはユニコードを正しく処理しません。それをファイルにリダイレクトすると、正しい出力が表示されます。 –

+0

ラスターフォントではなく正気なフォントを使用している場合、Windowsコンソールには複雑なスクリプトを使用せずにUnicodeが正しく表示されるはずです。ユニコードをサポートしていればUnicodeをサポートしており、ラスターフォントの場合はOEMコードページへの表示変換があります。 – Joey

答えて

2

それは私のために印刷されません。

public class Mkt { 
public static void main(String[] args) { 
    char c= '\u0000'; 
    System.out.println("-" + c + "-"); 
    } 
} 

$ javac Mkt.java && java Mkt 
-- 

Ubuntuの11.10ここに:/トライをチェックする

$ java -version 
java version "1.6.0_26" 
Java(TM) SE Runtime Environment (build 1.6.0_26-b03) 
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode) 

もの:

  • 変更端末ウィンドウ
  • のフォントを
  • あなたのマシンで他のJavaバージョンを試しましたか?
  • お使いのマシンと試したものとでは何か違いがありますか?
  • Cygwin
  • 他のコンソールエミュレータを試してみてください。 Console
  • リダイレクト好ましくはいくつかのバイナリエディタ
  • で小さなSwingアプリケーションを作成し、それが\u0001表示を何
  • 同じを表示するかどうかを確認するためにJTextAreaにそれを表示する?、(java Mkt > some_file.txt)を提出し、その中に何があるかを確認しますか
+0

(a)コンソールウィンドウはターミナルウィンドウではありません。 (b)zsnesなどのものを除いて、コンソールエミュレータはありません。あなたは»端末エミュレータ«という用語を探しているかもしれませんし、Windowsでも間違っているかもしれません。コンソールは隠しコンソールウィンドウをポーリングして、画面バッファ。ほとんど魔法ではなく、ほとんど何もエミュレートしない。 (c)ファイルへのリダイレクトは、Windowsコンソールの同じ特異性を継承します。 – Joey

+0

私はhavaチェック、私はフォントを変更すると、それはスペースを示しています。ファイルにリダイレクトされて、それは少しsquare.Soを示す理由は、Windowsコンソールがユニコードを正しく処理しない理由だと思う – user1298336