c語言文件儲存中文亂碼,c語言存文件為什麼會是亂碼

本文目錄一覽:

C語言 中文亂碼解決

中文亂碼問題:

環境:

Windows 10

VS Code 1.59.0

解決方案:

點擊右下角 utf-8,選擇打開 Reopen open with Encoding

選擇 GB2312

c語言中,存儲文件時為什麼亂碼,但顯示的時候不是亂碼

因為你存入文件的是一個個的結構體變量,而不是單純的文本數據

我的C語言程序運行後為什麼是亂碼?

有幾個小問題:

第一:c語言一般不支持中文,如果你用vc6.0++就是無法打印中文,一定會亂碼,建議用英文;

第二:如果你用的c語言編譯器支持中文,如devc++,則可以使用中文;

第三:我們的使用的字符格式,最多的是UTF-8,把默認代碼頁格式改為UTF-8試試吧

希望我的分享對你有用,感謝採納

C語言控制台程序,中文輸出變成亂碼,怎麼解決

這裡涉及到一個字符在源代碼(文本)中,編譯好的二進制文件中,以及最後控制台輸出編碼形式的區別.

首先,要明確一點:C(語言/程序)並不理解ANSI,UTF-8以及任何其他編碼.它只知道處理你給它的字符的二進制表示.

在簡體中文Windows下,默認的文本保存編碼是ANSI(即GBK);Linux下根據系統locale設定,一般應該是(zh_CN.UTF-8).(以下基於簡體中文Windows)

1)對於源文件中保存的”中文”這個字符串,VS2008看到的就是”0xd6d0″和”0xcec4″的形式(默認ANSI編碼得到).但編譯器才不管是不是GBK神馬的,它就管那串數字.

區別,MinGW看到的是”0xe4b8ad”和”0xe69687″(gcc默認UTF-8).注意,用MinGW編譯的源文件中有中文寬字符必須保存為UTF-8編碼.

2)然後,在二進制文件中的存儲形式,對傳統的字符串(char str[] = “中文”;),編譯器什麼都不做,直接把那串數字(如”0xd6d0″,”0xcec4″)搬過去塞進二進制文件.

但對於寬字符串(wchar_t wstr[] = L”中文”;),編譯器會將其做轉換,轉換成Unicode編碼格式(在Windows是UTF-16,而Linux下是UTF-32).如”中文”的16位Unicode是”0x4e2d”和”0x6587″,然後把這串轉換後的數字(“0x4e2d”,”0x6587″)塞進二進制文件中.(這裡VS和MinGW做的沒有區別)

這裡有點需要注意,編譯器必須知道你的源文件保存的編碼!如VS默認是ANSI編碼,如果你用UTF-8保存.c源文件去用VS打開看一定是亂碼.同理如果你用mingw編譯ANSI編碼保存的源文件,也會出錯!(但可以修改編譯選項解決,見文章末尾) 在本文這裡這個原因其實很好理解,因為編譯器需要知道,如果它要將一個保存在文件中的字符轉成寬字符時,是從什麼編碼轉到Unicode.(可見上述VS是GBK-Unicode,而MinGW是UTF-8-Unicode)

C語言數據保存在txt文件中顯示亂碼

你寫入文件的又不是字符串, 當然是看起來是亂碼。

可以先sprintf(str,”%f”,i),轉成字符串,將str用fwrite寫入文件。但這樣再去讀這些文件,需要再次將字符串轉換成數字。

原創文章,作者:XAWF,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/145089.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
XAWF的頭像XAWF
上一篇 2024-10-26 11:54
下一篇 2024-10-26 11:54

相關推薦

發表回復

登錄後才能評論