2009-10-14 72 views
1

我試圖放在一起以ascii「Start of Header」字符(0x01)開頭的字符串。 我這樣做我家的電腦有足夠簡單的:Java「 u0001something」不會返回預期的結果

String out = "\u0001this"; 
System.out.println(out); 

印方到終端..複製並粘貼到十六進制編輯器,我有我的0×01;

現在在工作..我做同樣的事情,但任何低於0x20只是打印0x00到終端。 只要我做「\ u0020」我得到一個空間打印輸出.. 任何想法是怎麼回事。

回答

3

可能要檢查您使用的是什麼文件編碼,默認情況下JVM運行的字符集等。不同的環境可能會有不同的設置。

+0

默認設置爲UTF-8。 – 2009-10-14 13:51:47

1

這幾乎肯定是您的終端仿真程序或其他程序顯示寫入標準輸出的功能。這個字符在定義上是不可打印的,所以終端做「顯示」它可能會有所不同。一些打印一個盒子,一些空白,一些什麼都沒有。

如果你依賴於如何打印一個不可打印的字符,哪個沒有定義,那可能是這個問題?它造成什麼問題?

1

您可以直接將此字符串寫入文件並在十六進制編輯器中打開該文件嗎?通過將文本寫入控制檯,然後依靠剪切和粘貼將字節移動到不同的應用程序,有相當多的中間步驟可能會干擾您的數據。

我懷疑你的代碼實際上在工作,但你無意中掩蓋了你自己的(正確的)結果。

+0

我想我一直在追兔子。我將字符串打印到一個文件中,十六進制編輯器顯示正確的字符。我試圖通過套接字與服務器應用程序進行交互。我正在接收來自服務器的消息,但它沒有響應我的請求。我認爲這是因爲代碼沒有正確發送,但這可能是另一個問題。謝謝! – 2009-10-14 14:23:28