當前位置:首頁 » 編程語言 » c語言中漢字復制出來亂碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中漢字復制出來亂碼

發布時間: 2022-07-23 20:35:29

c語言 輸出顯示中文亂碼


for (i=0;i<strlen(save);i++)
改 為
for (i=0;i<strlen(save) -1 ;i++)
試下~

㈡ C語言輸出中文亂碼

提幾個建議。1)沒給出str的大小,不知道你定義的多大。至少str要保證120以上。考慮用2的倍數最優可以char
str[122]並且因為系統將自動在最後加'\0'。最好設定讀取121為好。以免讀取半個中文字。2)fgets的用法問題。
追加返回值的判斷為好。if(fgets(str,120,fp)!=null){
printf("%s\n",str);}3)關於出現亂碼的問題,估計你的文件中有中文漢字。讀取到119位的時候正好是某個漢字的前一半。要解決這個if(fgets(str,121,fp)!=null)
這里120
改成讀偶數個121。另外文件最好用寬字元的。就可以避免亂碼了。

㈢ c語言程序代碼復制漢字怎麼是亂碼

在文字設置那,把默認輸入語言設為中文-美式鍵盤就不會再出現你這種情況了。

因為不同輸入語言支持的內置編碼不一樣,所以出現那種情況!

㈣ C語言編程出現漢字輸出亂碼現象

C語言中一個漢字是由兩個位元組來表示的
而C語言編程主要是以位元組為單位來顯示
所以你的C語言輸出中,如果漢字顯示只顯示了一個位元組,就會有亂碼出現了
正常的做法是,你的printf輸出時,符號的長度要為偶數位元組。

㈤ c語言運行輸出漢字,出現亂碼,用的visual 6.0c++

漢字都是用寬字元表示的,也就是2個char的大小
把寬字元分開讀取的話,列印(putchar(ch);)的就是亂碼

每次讀取固定長度的字元串,然後以字元串的形式輸出,就沒有問題了,修改如下:
只需要對while循環進行下修改就好了
char data[100] = "";
while(!feof(fp))//判斷是否到文件尾了
{
fflush(stdin);
//putchar(ch);
//ch=fgetc(fp);
fgets(data, 99, fp);//讀取99個字元,最後一個字元用來放'\0'
printf("%s", data);//輸出讀取到的字元串
}

㈥ C語言,輸出亂碼問題

提幾個建議。1)沒給出str的大小,不知道你定義的多大。至少str要保證120以上。考慮用2的倍數最優可以char
str[122]並且因為系統將自動在最後加'\0'。最好設定讀取121為好。以免讀取半個中文字。2)fgets的用法問題。
追加返回值的判斷為好。if(fgets(str,120,fp)!=NULL){
printf("%s\n",str);}3)關於出現亂碼的問題,估計你的文件中有中文漢字。讀取到119位的時候正好是某個漢字的前一半。要解決這個if(fgets(str,121,fp)!=NULL) 這里120
改成讀偶數個121。另外文件最好用寬字元的。就可以避免亂碼了。

㈦ 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語言程序漢字亂碼

在文字設置那,把默認輸入語言設為中文-美式鍵盤就不會再出現你這種情況了。因為不同輸入語言支持的內置編碼不一樣,所以出現那種情況!