cht電腦資訊Windows
adm Find login register

unicode console ?

eliu
1 unicode console ?
Promote 0 Bookmark 02010-03-09quote  

compile 成 UNICODE 的程式用 wprintf("%c", wide_char) 理論上應該可以在 console 顯示,實際上只能顯示 ASCII or ANSI MBCS ,造成 debug 不方便,必須 log to file,然後用 notepad 看。

看起來目前 windows XP 不支援 unicode (UTF-16) console,沒試過 在 vista or windows 7 有沒有問題。

在 Linux 只要開個 unicode console (UTF-8) 就好了。

edited: 1
企鵝狂
2
Promote 0 Bookmark 02010-03-09quote  

chcp 65001

 

http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/chcp.mspx?mfr=true

或是去console的捷徑裡面改,可以讓他預設就是unicode。

不過顯示還是很爛很醜..選字會破碎...。

eliu
3
Promote 0 Bookmark 02010-03-09quote  

Thanks, 我要顯示的是 1200 (UTF-16),不過還沒試過 chcp 有沒有問題

在 Windows unicode 的程式開 console,有設定 code page 1200  連顯示一般的 ascii 的 wide char 都會多一個空白。

        AllocConsole();
        SetConsoleCP(1200);
        SetConsoleOutputCP(1200);

edited: 1
eliu
4
Promote 0 Bookmark 02010-03-09quote  

chcp 1200出現「無效字碼頁」的訊息,看起來 console 完全不支援 UTF-16,卻支援 UTF-8,真是爆笑,windows NT 不是號稱全部用 UTF-16?

難道我要改成console 用UTF-8 顯示 ?試了一下,轉成 UTF-8 也是不行。

edited: 2
企鵝狂
5
Promote 0 Bookmark 02010-03-09quote  

http://www.mail-archive.com/unicode@unicode.org/msg12236.html

 

如果照這裡說的執行 cmd /u呢

我的測試方法,開notepad,打中文,存成unicode跟utf-8

cmd /u type unicode.txt 可以正確顯示

type utf8.txt 不知道怎樣都顯示不出來。 字型改成新細明體就可以了,可是開頭跟結尾會出現方塊,開頭是bom,結尾是...?

 

環境windows xp。

為什麼一定要用utf-16不可呢?

 去抓iconv redirect給他叫他幫你轉碼呢...可是我不知道windows怎麼pipe 

edited: 2
eliu
6
Promote 0 Bookmark 02010-03-09quote  

企鵝狂
為什麼一定要用utf-16不可呢?

用來 print  debug message 用的,我有把 UTF-16 用 WideCharToMultiByte 轉成 UTF-8,還是不行。

edited: 1

CC: C/C++
cht電腦資訊Windows
adm Find login register
views:23785