看板 C_and_CPP 關於我們 聯絡資訊
有板友私底下寄信給我,問了一些問題 不過有些問題我也不太確定,因此po在這裡 希望如果有講錯的地方,請大家糾正我 ----- 1.英文字母和阿拉伯數字儲存在電腦裡是不是佔1 byte? 答:如果是用ASCII編碼,是的 2.中文儲存在電腦裡是不是佔3 bytes? 答:不一定,如果是BIG5編碼,就是2 bytes   如果是UTF-8編碼,可能是2 bytes或3 bytes   如果是UTF-16,則是2 bytes 3.我用的OS是XP,XP下儲存檔案的檔名,若用中文儲存,則編碼是不是使用big5? 答:檔名我不是很肯定,但內部應該是用UTF-8或UTF-16編碼(我猜)
purpose:3.內部API用UTF-16LE。但硬碟儲存格式要看檔案系統規定11/06 22:39
4.用主控台應用程式,也就是cmd.exe來看中文字串,是不是編碼一定要改成ANSI? 用 UTF-8是不是就一定看成亂碼? 答:沒這回事,不過用ANSI與UTF-8的程式不一樣   UTF-8可能需要做一個轉換的動作 5.用Visual studio 2005 編輯程式時,如果在程式碼中打入中文字串並儲存在string型 別的變數裡頭,則這個中文字串會是用什麼編碼去儲存? 那萬一我用記事本把 sourcecode另存成utf-8的話,是不是儲存在那個變數裡的中文就轉換成utf-8了? 答:string s = "哈囉"; 這樣寫應該是big5 直接轉換的話,坦白說我不知道會發生什麼事... 如果要用unicode的話,我會這麼寫:wstring s = L"哈囉"; 6.為何utf-8的文字檔開頭會先儲存0x FF FE 這三個bytes ? 若創造utf-8文字檔沒有先 寫入這三個bytes的話會發生什麼事嗎? 答:這個東西叫做BOM(Byte Order Mark) http://60.248.128.85/bbs/dv_rss.asp?s=xhtml&boardid=63&id=491&page=3 上面這個網頁有不錯的介紹 7.在使用Visual studio 2005 c++的主控台應用程式時, 有沒有辦法使用wcout 輸出中文字串顯示到螢幕上?? 又該如何下手呢?? 答:我是這麼寫的: int main() { wcout << "哈囉" << endl; } 不過我不太懂,為什麼這裡不必寫 L"哈囉",加了 L 反而印不出東西 另外,底下的寫法可以通過編譯,但也印不出東西,我也不懂為什麼 #include <iostream> #include <string> using namespace std; int main() { wstring s = L"哈囉"; wcout << s; } 坦白說對於 wxxxx 系列的使用,我也非常不熟啊 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.171.46
uranusjr:請不要用 -- 當分隔線, 不然別人無法引用... 11/06 20:52
已修改,真是不好意思 ※ 編輯: james732 來自: 140.117.171.46 (11/06 21:35)
purpose:3.內部API用UTF-16LE。但硬碟儲存格式要看檔案系統規定 11/06 22:39
感謝補充! ※ 編輯: james732 來自: 140.117.171.46 (11/06 22:40)