標籤:

eclipse強轉無法輸出ASCII碼為3的字元(黑桃),而輸出unicode值可以?

java源文件與控制台編碼均為UTF-8


因為ASCII碼為3的並不是黑色心形符號,而是「End of Text」特殊字元。引用Wikipedia的表格:

ASCII

這些小於32的ASCII字元都是「控制字元」,原本編碼上並沒有規定對應的圖像(glyph)。

值為3的ASCII字元確實有一種圖像解讀方式是:

ASCII code 03 = ETX ( End of Text, hearts card suit )

( HTML entity = hearts; )

但這只是某些平台上某些字體對控制字元的解讀而已,並不是ASCII編碼的本意。

況且Java里,

(char) 3

本意並不是「值為3的一個ASCII字元」,而是「值為U+0003的一個UTF-16 code point」。碰巧這個code point正好跟ASCII碼的意思一樣而已。

Unicode里表示撲克牌的黑色心形符號的字元是U+2665,也就是題主代碼里後一種情況。


首先,這個是紅心

? 在 cp437 裡面才是 3

彼時,顯卡的字元模式下每個字元(Cell)可以有 256 種取法,ASCII 的七位編碼里有大量的空位,而高 128 字元全是空的,IBM 他們就把這些空白位置利用起來放各種字元。ASCII 的控制區放的是各種 dingbat。

如果你用 DOS 中斷寫屏的話,就能調出這些字元。Windows 的 Console 可以模擬這種行為,在 XP 時代用過 TURBO PASCAL 的都知道它的界面就是用這些字元畫的。


java裡面的字元編碼是unicode,不是ascii。建議題主參閱《java核心技術卷一》,裡面有比較清楚的解釋。


推薦閱讀:

都說 IntelliJ 比 Eclipse 好用,那麼 IntelliJ 有哪些好用的技巧?
eclipse設置斷點時設置不上?
目前多數互聯網公司的Android開發是使用eclipse還是Android studio?

TAG:Java | Eclipse |