精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何解決codeblocks編碼問題

嵌入式單片機 ? 來源:未知 ? 作者:胡薇 ? 2018-11-15 14:18 ? 次閱讀

要解決這個問題,先要搞清楚有三個地方涉及到編碼問題。

1.1CodeBlocks編輯器保存源文件用的編碼。

默認情況下,是保存為windows本地編碼的,也就是WINDOWS-936字符集,也就是GBK編碼。

但是很神奇的是,GCC編譯器默認編譯的時候是按照UTF-8解析的。你存成GBK,但是當成UTF-8解析,這還能編譯通過,這才有鬼了,所以這兩個地方編碼不統一好,編譯的時候報錯:error: converting to execution character set: Illegal byte sequence,你根本連通過編譯的可能性都沒有!

其實要解決這個問題很簡單,編寫Code::Blocks的人只需要在調用編譯器之前檢測一下源文件是什么編碼,然后就自動讓編譯器用什么編碼進行解釋,問題就解決了。只是很可惜,Code::Blocks編寫的人可能還沒有這么做,或許是對本地化認識不夠吧,也可能是覺得沒必要吧?(所以就給初學的人帶來問題了,所以就覺得易用性不如微軟了,免費和商業的東西還是有差距的)

1.2GCC編譯器編譯的時候對輸入的源文件解釋用的編碼

這個編譯器可以設置-finput-charset=charset來指定編譯器用什么編碼解釋輸入源文件。比如如果源文件的字符集是GBk,那么就必須指定-finput-charset=GBK,如果不指定,一律當做UTF-8處理。

除非你源文件真的是UTF-8,否則就會出現轉換錯誤。

1.3編譯好的執行文件所用編碼

如果你1和2兩個地方的編碼都能統一,那么編譯時不會報錯了,但是編譯好了,運行一下看看,在控制臺顯示的依然是亂碼!

那是因為控制臺顯示的時候缺省的是使用系統默認的字符集,比如windows下用的是GBk,但是默認情況下,編譯之后的執行文件時編譯成UTF-8的,所以又出現了不統一,亂碼由此而生!

解決的方法和簡單,就是給編譯器加上選項:-fexec-charset=GBK,和windows默認的統一,就OK了。

搞懂了亂碼產生的原因,那么不難得出結論,如何修改,你想修改成什么都OK,關鍵是要統一,并不是像網上一些人說的,修改成GBK就OK,其實你要修改成UTF-8都OK,關鍵是統一。

1.4修改的地方。

1.修改源文件保存編碼在:settings->Editor->gernal settings找到Encoding group Box

Use encoding when opening files:這個表示打開文件用的格式,第一次保存文件的時候也會用這個格式。

As default encoding:表示設置為文件缺省保存和打開編碼格式

注意,要先設置好,然后保存文件,才有效。如果你已經保存了文件,無論你怎么修改這個設置,也不會改變你文件的格式了。你的文件還是保持第一次保存的時候的格式。所以,如果遇到無法生效,只能先設置好格式,再重新建文件了。

2.修改編譯器對源文件解釋編碼格式和生成執行文件執行時候采用的編碼格式是在settings->compiler and debugger settings里面,選擇對應的GCC編譯器

在other options里面加入:

-finput-charset=charset

-fexec-charset=charset

第一個參數表示編譯的時候輸入文件的編碼解釋格式,第二參數表示生成的執行文件執行的時候顯示用的編碼格式。這些參數如果和實際不吻合,必然產生亂碼。只要吻合,就不會亂碼了。

由于我的源文件格式是WINDOWS-936,但是這里設置成UTF-8,所以編譯肯定報錯!

只需要修改成-finput-charset=WINDOWS-936或者GBk,就編譯通過了。

如果不設置fexec-charset默認會認為執行環境是UTF-8,而windows下并不是,所以Linux下沒問題,因為linux就是UTF-8的,但是windows下必然出現亂碼。所以設置成GBk,就統一了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編碼
    +關注

    關注

    6

    文章

    935

    瀏覽量

    54765
  • CodeBlocks
    +關注

    關注

    0

    文章

    24

    瀏覽量

    9477

原文標題:codeblocks編碼問題

文章出處:【微信號:qrsworld,微信公眾號:嵌入式單片機】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    codeblocks經典

    codeblocks經典
    發表于 06-15 13:08

    神奇的codeblocks

    各位大神麻煩看看這是怎么回事,第二次計算的代碼明顯是錯的,應該生成隨機數,但無論我運行多少次總是正確的結果,這codeblocks難道還能自動改錯嗎?#include int main(void
    發表于 02-24 21:00

    在linux下安裝codeblocks

    在linux下安裝codeblocks后,寫一段程序,編譯都沒有問題,到了運行階段就出錯,起初上網查沒找到解決方案,后來看到百度文庫里的一篇文章才解決了,原來是沒有配置運行控制臺,
    發表于 07-24 08:18

    Codeblocks編程報錯是什么原因導致的?

    今天用Codeblocks 編程,出現一個錯誤,之前沒有見過,求大神指點,是什么原因導致的。 c:winavrbin..libgccavr4.3.3........avrlibavr5crtm644pa.o:(.init9+0x0)||undefined reference to `main\'|
    發表于 10-31 07:43

    codeblocks 51單片機學習(一)

    codeblocks 51單片機學習(一)原先是在keil下進行51單片機編程的,那個時候跟著視頻學,發現沒學會什么,后來因某些原因重裝了一下電腦,又準備繼續學習51單片機,決定換一個環境,也就
    發表于 11-11 18:21 ?8次下載
    <b class='flag-5'>codeblocks</b> 51單片機學習(一)

    codeblocks環境下SDCC編譯單片機程序

    1.分別下載安裝Codeblocks + SDCC2. 在codeblocks中進菜單設置 settings/complier選擇 Small Device C Complier,Set
    發表于 11-24 18:06 ?14次下載
    <b class='flag-5'>codeblocks</b>環境下SDCC編譯單片機程序

    怎樣在codeblocks上編寫程序

    CodeBlocks上編寫程序是一項相對簡單而又重要的任務。CodeBlocks是一個廣泛使用的集成開發環境(IDE),它能夠幫助程序員編寫、編譯和運行他們的代碼。在本篇文章中,我們將詳細介紹
    的頭像 發表于 11-26 09:26 ?1515次閱讀

    codeblocks簡單的加減法編程

    CodeBlocks是一種常見的集成開發環境(IDE),用于編寫、運行和調試各種編程語言的程序。在本文中,我們將探索如何使用CodeBlocks進行加減法編程。我們將詳細介紹CodeBlocks
    的頭像 發表于 11-26 09:27 ?1118次閱讀

    codeblocks如何恢復默認布局

    CodeBlocks 是一款流行的開源集成開發環境(IDE),適用于多種編程語言,如 C、C++、Fortran 等。在 CodeBlocks 中,您可以自定義和修改窗口布局,以滿足個人編程需求
    的頭像 發表于 11-26 09:35 ?7022次閱讀

    codeblocks環境錯誤解決辦法

    CodeBlocks是一款常用的集成開發環境,用于編寫、編譯和調試C、C++等程序。然而,有時在使用CodeBlocks時可能會遇到一些錯誤或問題。本文將為你提供一些常見CodeBlocks環境錯誤
    的頭像 發表于 11-26 09:37 ?6706次閱讀

    CodeBlocks保存的項目在哪找

    CodeBlocks是一個集成開發環境 (IDE),主要用于C和C++程序開發。它提供了一種方便的方式來編寫、調試和構建代碼。 首先,我們需要知道CodeBlocks的項目文件實際上是由多個文件組成
    的頭像 發表于 11-26 09:40 ?2537次閱讀

    CodeBlocks屬于什么軟件

    CodeBlocks是一款集成開發環境(Integrated Development Environment,簡稱IDE),專門用于編寫、編輯、編譯和調試程序的軟件。它提供了一系列的工具和功能,方便
    的頭像 發表于 11-26 09:53 ?3882次閱讀

    codeblocks工具欄恢復

    CodeBlocks是一種開發環境,廣泛用于編寫和調試各種編程語言的源代碼。它提供了用戶友好的界面,以及各種工具和功能,方便程序員進行開發工作。而恢復CodeBlocks工具欄的功能也是程序員在
    的頭像 發表于 11-26 09:57 ?4924次閱讀

    codeblocks怎么創建c文件

    CodeBlocks 中,你可以按照以下步驟創建一個新的 C 文件: 步驟 1: 打開 CodeBlocks 首先,你需要打開 CodeBlocks IDE。你可以在開始菜單或快捷方式上找到它
    的頭像 發表于 11-26 10:21 ?4539次閱讀

    codeblocks可以做什么東西?

    Codeblocks是一個開源的集成開發環境(IDE),用于編寫、編譯和調試各種編程語言的程序。它是一個跨平臺的開發工具,支持多種操作系統,包括Windows、Mac OS和Linux
    的頭像 發表于 11-26 10:23 ?1785次閱讀