從vs軟件中復制中文的時候是亂碼,也不知道怎么解決,小編帶來的就是VS粘貼word時中文亂碼修復工具,可以很好的解決這個問題,需要的朋友快來下載吧。
修復vs復制亂碼問題
VS粘貼word時中文亂碼修復工具功能介紹
部分VS版本復制代碼到word時, 中文注釋變成亂碼.就做了個小工具實時修復 ,
以前在網(wǎng)上也下載過類似工具, 但每次都要點一下,很麻煩,
本工具可自動監(jiān)控剪切板, 自動修復, 可謂全自動了.
使用方法
下載后直接點擊開始監(jiān)控
不需要時點擊停止
vs2010上中文顯示亂碼問題
常見的字符編碼有:
1.ASCII碼是單字節(jié)編碼,編碼范圍是0x00-0x7F(最高位保持為0)。ASCII字符集包括英文字母、阿拉伯數(shù)字和標點符號等字符。其中0x00-0x20和0x7F共33個控制字符,只支持ASCII碼的系統(tǒng)會忽略每個字節(jié)的最高位,只認為低7位是有效位。
2.GB2312 是對 ASCII 的中文擴展,正式的名稱為MBCS(Multi-Byte Chactacter System,多字節(jié)字符系統(tǒng))按照程序員的稱呼,GB2312、GBK到GB18030都屬于雙字節(jié)字符集 (DBCS)。
規(guī)定:一個小于127的字符的意義與原來相同,但兩個大于127的字符連在一起時,就表示一個漢字,前面的一個字節(jié)(他稱之為高字節(jié))從0xA1用到 0xF7,后面一個字節(jié)(低字節(jié))從0xA1到0xFE,這樣我們就可以組合出大約7000多個簡體漢字了
3.Unicode,unicode是全世界統(tǒng)一的編碼規(guī)則,但是這個只規(guī)定了各種字符的數(shù)字編碼(相當于一種標準),具體實現(xiàn)的存儲方式有utff-8,utf-16,utf-32等形式。各種形式有不同的存儲和與unicode代碼的映射規(guī)則。
現(xiàn)在大部分具有國際化特征的軟件核心字符處理都是以Unicode 為基礎的,在軟件運行時根據(jù)當時的Locale/Lang/Codepage 設置確定相應的本地字符編碼設置,并依此處理本地字符。在處理過程中需要實現(xiàn)Unicode 和本地字符集的相互轉換,甚或以Unicode 為中間的兩個不同本地字符集的相互轉換。這種方式在網(wǎng)絡環(huán)境下被進一步延伸,任何網(wǎng)絡兩端的字符信息也需要根據(jù)字符集的設置轉換成可接受的內(nèi)容。
通常android手機和ipone手機上顯示中文采用的編碼是Unicode(UTF-8 帶簽名)
所以要想中文字體在手機上面顯示需要把字符設置成Unicode(UTF-8 帶簽名),方法如下(vs2010):
1.選中字符所在的文件,
2,選擇“文件”菜單
3.選擇“高級保存選項” ,然后可以設置該文件的字符編碼了。
如果把字符編碼設置成 Unicode(UTF-8 帶簽名),那么在vs2010中運行游戲,發(fā)現(xiàn)中文顯示亂碼了
為什么?那是因為vs2010用的編碼方式是GB2321,這時我們需要把Unicode編碼轉換成為GB2312編碼
怎么呢,首先:定義wstring或者wchar_t,比如:static const wstring W_GAMEOVER_TITLE = L"數(shù)據(jù)統(tǒng)計";
static const wchar_t* W_KILL_LABEL = L"本局殺死敵人數(shù): %d人";
注意:wchar_t類型主要用在國際化程序的實現(xiàn)中,但它不等同于unicode編碼。unicode編碼的字符一般以wchar_t類型存儲。
void ConvertGBKToUtf8(CString& strGBK) {
int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, NULL,0);
unsigned short * wszUtf8 = new unsigned short[len+1];
memset(wszUtf8, 0, len * 2 + 2);
MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, wszUtf8, len);
len = WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, NULL, 0, NULL, NULL);
char *szUtf8=new char[len + 1];
memset(szUtf8, 0, len + 1);
WideCharToMultiByte (CP_UTF8, 0, wszUtf8, -1, szUtf8, len, NULL,NULL);
strGBK = szUtf8;
delete[] szUtf8;
delete[] wszUtf8;
}
void ConvertUtf8ToGBK(CString& strUtf8) {
int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0);
unsigned short * wszGBK = new unsigned short[len+1];
memset(wszGBK, 0, len * 2 + 2);
MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, wszGBK, len);
len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
char *szGBK=new char[len + 1];
memset(szGBK, 0, len + 1);
WideCharToMultiByte (CP_ACP, 0, wszGBK, -1, szGBK, len, NULL,NULL);
strUtf8 = szGBK;
delete[] szGBK;
delete[] wszGBK;
}
- PC官方版
- 安卓官方手機版
- IOS官方手機版