eclipse強轉無法輸出ASCII碼為3的字元(黑桃),而輸出unicode值可以?
01-07
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?