新聞中心
C語(yǔ)言控制臺(tái)程序,中文輸出變成亂碼,怎么解決?
這里涉及到一個(gè)字符在源代碼(文本)中,編譯好的二進(jìn)制文件中,以及最后控制臺(tái)輸出編碼形式的區(qū)別.

首先,要明確一點(diǎn):C(語(yǔ)言/程序)并不理解ANSI,UTF-8以及任何其他編碼.它只知道處理你給它的字符的二進(jìn)制表示.
在簡(jiǎn)體中文Windows下,默認(rèn)的文本保存編碼是ANSI(即GBK);Linux下根據(jù)系統(tǒng)locale設(shè)定,一般應(yīng)該是(zh_CN.UTF-8).(以下基于簡(jiǎn)體中文Windows)
1)對(duì)于源文件中保存的"中文"這個(gè)字符串,VS2008看到的就是"0xd6d0"和"0xcec4"的形式(默認(rèn)ANSI編碼得到).但編譯器才不管是不是GBK神馬的,它就管那串?dāng)?shù)字.
區(qū)別,MinGW看到的是"0xe4b8ad"和"0xe69687"(gcc默認(rèn)UTF-8).注意,用MinGW編譯的源文件中有中文寬字符必須保存為UTF-8編碼.
2)然后,在二進(jìn)制文件中的存儲(chǔ)形式,對(duì)傳統(tǒng)的字符串(char str[] = "中文";),編譯器什么都不做,直接把那串?dāng)?shù)字(如"0xd6d0","0xcec4")搬過(guò)去塞進(jìn)二進(jìn)制文件.
但對(duì)于寬字符串(wchar_t wstr[] = L"中文";),編譯器會(huì)將其做轉(zhuǎn)換,轉(zhuǎn)換成Unicode編碼格式(在Windows是UTF-16,而Linux下是UTF-32).如"中文"的16位Unicode是"0x4e2d"和"0x6587",然后把這串轉(zhuǎn)換后的數(shù)字("0x4e2d","0x6587")塞進(jìn)二進(jìn)制文件中.(這里VS和MinGW做的沒(méi)有區(qū)別)
天正建筑2013菜單顯示亂碼?
你的cad平臺(tái)是2006以上的嗎?如果是的話(huà),你卸載重新安裝也許可以修正。
其實(shí)天正7.0-8.5都是相當(dāng)穩(wěn)定的,建議用7.0-8.5之間版本的天正建筑,cad平臺(tái)最好是2006或2008primoramdisk怎么樣?
Primo Ramdisk,普通用戶(hù)推薦使用的軟件,有破解版,較易上手,win7/win8。
[優(yōu)點(diǎn)]是支持動(dòng)態(tài)管理,即虛擬出來(lái)的硬盤(pán)用掉多少,內(nèi)存才少多少,而不是設(shè)置成2G大小就 2G的內(nèi)存全用了,同時(shí)提供了工具來(lái)快速改變Temp文件夾的位置等。
[缺點(diǎn)]由于使用了動(dòng)態(tài)管理的技術(shù),有點(diǎn)兼容性問(wèn)題(極少數(shù)情況),比如Win8下AE無(wú)法使用,Vs2008無(wú)法編譯等,基本普通用戶(hù)使用無(wú)問(wèn)題。
Qsoft Ramdisk,高級(jí)用戶(hù)推薦,有破解版,不易上手,win8兼容性問(wèn)題較大。
[優(yōu)點(diǎn)]可以使用系統(tǒng)保留的內(nèi)存空間,更趨向于真實(shí)的硬盤(pán)。
[缺點(diǎn)]不支持動(dòng)態(tài)管理,盤(pán)符不能一直設(shè)置成中文(開(kāi)機(jī)后亂碼),安裝繁瑣。
Ramdisk Plus/Gilisoft RAMDisk /魔方,這幾個(gè)半斤八兩,所以放一起。
功能幾乎相同,僅支持從空余的內(nèi)存空間中開(kāi)辟出硬盤(pán),都有破解版,其中魔方的是綠色版,總有點(diǎn)水的感覺(jué)。
綜上所述,如果你是普通用戶(hù),使用Primo Ramdisk完全可以,高級(jí)用戶(hù)如果不用到一些奇怪的軟件,比如Vs,Ae等一些要對(duì)內(nèi)存識(shí)別的軟件亦可使用。如果想簡(jiǎn)單點(diǎn)用,魔方就Ok了。
到此,以上就是小編對(duì)于的問(wèn)題就介紹到這了,希望這3點(diǎn)解答對(duì)大家有用。
分享文章:C語(yǔ)言控制臺(tái)程序,中文輸出變成亂碼,怎么解決?windows2008亂碼
分享URL:http://fisionsoft.com.cn/article/dppioji.html


咨詢(xún)
建站咨詢(xún)
