2016-02-29 86 views
1

我在C++程序中使用ncurses並希望能夠使用A_ALTCHARSET字符。在我的Linux電腦上它工作的很好,但是當我在我的Mac上試用時,有幾個字符顯示爲'?'。作爲測試,我在兩臺電腦上運行了第二個程序this website。在我的Linux計算機時正確顯示所有的字符,並顯示出同樣的事情,在網站上,但我的Mac上的圖片我:ncurses OSX上不顯示A_ALTCHARSET字符

       NCURSES ALTCHARSET CHARACTERS 
    43 = > │ 44 = < │ 45 =^│ 46 = v │ 48 = # │ 96 = ◆ │ 97 = ▒ │ 102 = ° 
    103 = ± │ 104 = # │ 105 = ␋ │ 106 = ┘ │ 107 = ┐ │ 108 = ┌ │ 109 = └ │ 110 = ┼ 
    111 = ⎺ │ 112 = ⎻ │ 113 = ─ │ 114 = ⎼ │ 115 = ⎽ │ 116 = ├ │ 117 = ┤ │ 118 = ┴ 
    119 = ┬ │ 120 = │ │ 121 = ≤ │ 122 = ≥ │ 123 = π │ 124 = ≠ │ 125 = £ │ 126 = · 
    128 = ? │ 161 = ? │ 162 = ? │ 163 = ? │ 164 = ? │ 165 = ? │ 166 = ? │ 167 = ? 
    168 = ? │ 169 = ? │ 170 = ? │ 171 = ? │ 172 = ? │ 174 = ? │ 175 = ? │ 176 = ? 
    177 = ? │ 178 = ? │ 179 = ? │ 180 = ? │ 181 = ? │ 182 = ? │ 183 = ? │ 184 = ? 
    185 = ? │ 186 = ? │ 187 = ? │ 188 = ? │ 189 = ? │ 190 = ? │ 191 = ? │ 192 = ? 
    193 = ? │ 194 = ? │ 195 = ? │ 196 = ? │ 197 = ? │ 198 = ? │ 199 = ? │ 200 = ? 
    201 = ? │ 202 = ? │ 203 = ? │ 204 = ? │ 205 = ? │ 206 = ? │ 207 = ? │ 208 = ? 
    209 = ? │ 210 = ? │ 211 = ? │ 212 = ? │ 213 = ? │ 214 = ? │ 215 = ? │ 216 = ? 
    217 = ? │ 218 = ? │ 219 = ? │ 220 = ? │ 221 = ? │ 222 = ? │ 223 = ? │ 224 = ? 
    225 = ? │ 226 = ? │ 227 = ? │ 228 = ? │ 229 = ? │ 230 = ? │ 231 = ? │ 232 = ? 
    233 = ? │ 234 = ? │ 235 = ? │ 236 = ? │ 237 = ? │ 238 = ? │ 239 = ? │ 240 = ? 
    241 = ? │ 242 = ? │ 243 = ? │ 244 = ? │ 245 = ? │ 246 = ? │ 247 = ? │ 248 = ? 
    249 = ? │ 250 = ? │ 251 = ? │ 252 = ? │ 253 = ? │ 254 = ? │ 255 = ? │ 

爲什麼沒有這方面的工作,是有遠來解決它?

回答

0

看起來好像你做了類似TERMlinux的設置。 Linux控制檯提供了用於繪製線條圖形的非VT100方法(基本上使用160-255的代碼)。 OSX終端實現了VT100風格的線路圖形,這需要切換字符集。

終端描述(由TERM環境變量選擇)在此區域中有所不同。對於OSX終端,建議的TERM是ncurses中的nsterm風格之一。比較:

$ infocmp linux nsterm |grep acs 
     acsc: '+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376', '``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~'. 
     enacs: NULL, '\E(B\E)0'. 
     rmacs: '\E[10m', '^O'. 
     smacs: '\E[11m', '^N'. 

在VT100風格的能力smacsrmacs串被稱爲移入移出(用於正常和圖形)。您可能會看到,它們不像Linux的功能。

進一步閱讀:

要查找的特徵是您的程序在shell中使用的TERM的值。 OSX終端只有一種可能的行爲(無匹配「linux」)。該程序確實有一個首選項對話框,該對話框設置TERM,但您的shell可能會明確將其設置爲某個其他值。 例如,終端數據庫指出,

# * The terminal preferences dialog replaces xterm-color by xterm-16color and 
# xterm-256color. However, it adds "nsterm", so it is possible to use the 
# nsterm entry from this file to override the MacPorts (20110404) or 
# system (20081102) copy of this file. 
# + In OS X 10.8 (Mountain Lion) the TERM which can be set in the preferences 
# dialog defaults to xterm-256color. Alternative selections are ansi, 
# dtterm, rxvt, vt52, vt100, vt102, xterm and xterm-16color. However, 
# the menu says "Declare terminal as" without promising to actually emulate 
# the corresponding terminals. Indeed, changing TERM does not affect the 
+0

我試着設置終端 - >首選項 - > Profiles->高級 - > TERMINFO到nsterm,ANSI,dtterm的,在rxvt和xterm的,但沒有一次成功。 – Stu