[問題] 關於中文編碼的一些問題
有板友私底下寄信給我,問了一些問題
不過有些問題我也不太確定,因此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編碼(我猜)
推
11/06 22:39,
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
→
11/06 20:52, , 1F
11/06 20:52, 1F
已修改,真是不好意思
※ 編輯: james732 來自: 140.117.171.46 (11/06 21:35)
推
11/06 22:39, , 2F
11/06 22:39, 2F
感謝補充!
※ 編輯: james732 來自: 140.117.171.46 (11/06 22:40)
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章