欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

編輯器寫C語(yǔ)言輸出中文亂碼問題及解決

 更新時(shí)間:2023年09月08日 16:55:18   作者:是嚴(yán)寒呀  
這篇文章主要介紹了編輯器寫C語(yǔ)言輸出中文亂碼問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

編輯器寫C語(yǔ)言輸出中文亂碼

在寫C語(yǔ)言時(shí),有時(shí)候需要使用printf輸出中文,如果使用IDE來寫代碼,例如使用VisualStudio,輸出中文沒有問題。

但是當(dāng)使用編輯器+編譯器的方式寫代碼,在這個(gè)環(huán)境下輸出中文可能會(huì)遇到中文輸出亂碼。

環(huán)境

  • 編輯器:VSCode
  • 編譯器:Mingw-w64

C語(yǔ)言代碼:

#include <stdio.h>
int main() 
{
    char a[2048];
    FILE *fp;
    if ((fp = fopen("test.txt", "r+")) == NULL) {
        printf("無法打開\n");
        return 0;
    }
    fscanf(fp, "%s", &a);
    printf("a的值:%s\n", a); 
    fclose(fp);
    return 0;
}

代碼說明:上述代碼的主要作用是讀取文件的內(nèi)容,并將讀取內(nèi)容輸出在屏幕上

文件內(nèi)容:

說明:test.txt 文件是通過右鍵新建文本文檔建立的。

過程

1.編譯:使用gcc main.c -o main,生成可執(zhí)行文件main.exe

2.運(yùn)行:輸入main.exe 運(yùn)行程序 (注:test.txt和C源文件在同一個(gè)文件夾下)

分析原因:

這時(shí)候輸出中文異常,但是讀取的內(nèi)容沒有問題。

這里關(guān)注兩個(gè):一是為什么"printf("a的值:%s\n", a)"這句代碼中的漢字在輸出時(shí)亂碼,二是同樣漢字,讀取的內(nèi)容沒有問題。

第一個(gè)問題是因?yàn)榫幋a不一致,也就是文件的編碼和系統(tǒng)終端(也就是cmd)的默認(rèn)編碼是不一樣的,中文系統(tǒng)里cmd的默認(rèn)編碼是GBK,而在VSCode中文件的編碼是UTF-8。當(dāng)這兩個(gè)編碼不一樣時(shí),會(huì)出現(xiàn)中文亂碼,準(zhǔn)確說是異常。

圖:VSCode的文件默認(rèn)編碼是UTF-8

第二個(gè)問題為什么讀取內(nèi)容沒問題呢,這是因?yàn)閃indows文本文檔的默認(rèn)編碼是ANSI(在中文系統(tǒng)里即GBK)(ANSI和ASCII的關(guān)系:簡(jiǎn)單說就是ANSI是對(duì)ASCII的擴(kuò)展,兼容ASCII),cmd默認(rèn)輸出編碼是ASCII(即GBK),所以讀取了文件內(nèi)容再將內(nèi)容輸出到cmd終端沒有問題。

圖:通過文件-另存為 可以查看到這個(gè)文件的編碼方式,默認(rèn)為ANSI

測(cè)試

知道后,可以做個(gè)測(cè)試,將test文件的編碼改為UTF-8,然后再讀取輸出,如果沒有錯(cuò),這時(shí)候應(yīng)該輸出異常。

1.保存為UTF-8

2.運(yùn)行下程序

和預(yù)想結(jié)果一樣

拓展

這里使用另一個(gè)輕量IDE:Dev-C++

當(dāng)把main.c用dev打開時(shí),出現(xiàn)亂碼:

這個(gè)亂碼和上面終端輸出“a的值”的亂碼一樣

做個(gè)測(cè)試,使用dev新建文件,復(fù)制代碼進(jìn)去

編譯運(yùn)行結(jié)果:

我們?cè)赿ev的終端里"a的值"輸出沒有問題,后面的內(nèi)容異常,這是因?yàn)榍懊姘裻est文件改為了UTF-8。

這里就要問一個(gè)問題dev的代碼文件難道和cmd的編碼格式一樣?

可以使用notepad++查看文件編碼:

這個(gè)demo.cpp是在dev里創(chuàng)建,編碼是GB2312

前面用dev打開VSCode創(chuàng)建的main.c出現(xiàn)亂碼,說明dev是以GB2312的編碼方式打開文件的,也是以GB2312保存文件的,而GB2312編碼在cmd里以GBK編碼輸出中文是沒有問題的。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • C語(yǔ)言中如何利用循環(huán)嵌套輸出一個(gè)菱形

    C語(yǔ)言中如何利用循環(huán)嵌套輸出一個(gè)菱形

    這篇文章主要介紹了C語(yǔ)言中如何利用循環(huán)嵌套輸出一個(gè)菱形問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • C++實(shí)現(xiàn)LeetCode(149.共線點(diǎn)個(gè)數(shù))

    C++實(shí)現(xiàn)LeetCode(149.共線點(diǎn)個(gè)數(shù))

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(149.共線點(diǎn)個(gè)數(shù)),本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • 優(yōu)先隊(duì)列(priority_queue)的C語(yǔ)言實(shí)現(xiàn)代碼

    優(yōu)先隊(duì)列(priority_queue)的C語(yǔ)言實(shí)現(xiàn)代碼

    本文簡(jiǎn)要介紹一種基于數(shù)組二叉堆實(shí)現(xiàn)的優(yōu)先隊(duì)列,定義的數(shù)據(jù)結(jié)構(gòu)和實(shí)現(xiàn)的函數(shù)接口說明如下
    2013-10-10
  • C++如何在變量前面加#

    C++如何在變量前面加#

    這篇文章主要介紹了C++如何在變量前面加#問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • VS2022連接sqlserver數(shù)據(jù)庫(kù)教程

    VS2022連接sqlserver數(shù)據(jù)庫(kù)教程

    本文主要介紹了VS2022連接sqlserver數(shù)據(jù)庫(kù)教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 詳解C++?轉(zhuǎn)換的非正式分類

    詳解C++?轉(zhuǎn)換的非正式分類

    C++?正式分類方法是直接按語(yǔ)法分類,分為:隱式轉(zhuǎn)換和顯示轉(zhuǎn)換。這篇文章主要介紹了C++?轉(zhuǎn)換的非正式分類,需要的朋友可以參考下
    2022-01-01
  • Matlab處理圖像后實(shí)現(xiàn)簡(jiǎn)單的人臉檢測(cè)

    Matlab處理圖像后實(shí)現(xiàn)簡(jiǎn)單的人臉檢測(cè)

    本文主要介紹一下如何使用matlab進(jìn)行圖像處理后實(shí)現(xiàn)人臉檢測(cè),感興趣的可以了解一下
    2021-11-11
  • C語(yǔ)言鏈表實(shí)現(xiàn)商品庫(kù)存管理系統(tǒng)

    C語(yǔ)言鏈表實(shí)現(xiàn)商品庫(kù)存管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言鏈表實(shí)現(xiàn)商品庫(kù)存管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C++左值引用與指針的區(qū)別及說明

    C++左值引用與指針的區(qū)別及說明

    左值引用與指針的區(qū)別:左值引用是一個(gè)別名,只能綁定左值,對(duì)左值引用的訪問與訪問左值是相同的;指針是一個(gè)變量,該變量在內(nèi)存中存在真是的物理地址,該變量?jī)?nèi)的存儲(chǔ)的是一個(gè)內(nèi)存地址,訪問指針變量對(duì)應(yīng)的內(nèi)容需要配合解訪問符*
    2025-03-03
  • C++中淺拷貝與深拷貝的詳解及其作用介紹

    C++中淺拷貝與深拷貝的詳解及其作用介紹

    這篇文章主要介紹了C++中淺拷貝與深拷貝的詳解及其作用介紹,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09

最新評(píng)論