windows內建記事本導致文字檔(UTF-8編碼)開頭三個字元亂碼問題

來源:互聯網
上載者:User

標籤:

在windows平台下,使用系統的記事本以UTF-8編碼格式儲存了一個文字檔,但是由於Microsoft開發記事本的團隊使用了一個非常怪異的行為來儲存UTF-8編碼的檔案,它們自作聰明地在每個檔案開頭添加了0xefbbbf(十六進位)的字元,所以我們就會遇到很多不可思議的問題,比如,網頁第一行可能會顯示一個“?”,明明正確的程式一編譯就報出語法錯誤,等等。

下面為一段測試程式,由記事本編輯的文字檔導致檔案開頭前三個字元亂碼。

#include <stdio.h>#define MAX_LEN 100int main(){    char strLine[MAX_LEN];    int i = 0;    memset(strLine,0x0,MAX_LEN);    FILE * fp;    fp = fopen("eng_query.txt","r");    if(NULL == fp)    {        printf("open file fail.\n");        return -1;    }    while(fgets(strLine,MAX_LEN,fp))    {        printf("str = %s",strLine);//將每行字串列印出來        for(i=0; i<strlen(strLine); i++)//將每各字串中的字元以十六進位格式列印出來        {            printf("%x  ",strLine[i]);        }        printf("\n\n");    }    fclose(fp);    return 0;}

輸入檔案:

tsinghua pressmp18evaluating method for the double imagejiaoyuxvshibalancing mechanismhthramplificationbionic optimization algorithma r ltcb

輸出檔案:

str = 鍩縯singhua pressffffffef  ffffffbb  ffffffbf  74  73  69  6e  67  68  75  61  20  70  72  65  73  73  astr = mp186d  70  31  38  astr = evaluating method for the double image65  76  61  6c  75  61  74  69  6e  67  20  6d  65  74  68  6f  64  20  66  6f72  20  74  68  65  20  64  6f  75  62  6c  65  20  69  6d  61  67  65  astr = jiaoyuxvshi6a  69  61  6f  79  75  78  76  73  68  69  astr = balancing mechanism62  61  6c  61  6e  63  69  6e  67  20  6d  65  63  68  61  6e  69  73  6d  astr = hthr68  74  68  72  astr = amplification61  6d  70  6c  69  66  69  63  61  74  69  6f  6e  astr = bionic optimization algorithm62  69  6f  6e  69  63  20  6f  70  74  69  6d  69  7a  61  74  69  6f  6e  2061  6c  67  6f  72  69  74  68  6d  astr = a r l61  20  72  20  6c  astr = tcb74  63  62  a

 

我們可以發現檔案開頭三個字元亂碼,每個漢字佔用兩個字元,因此第4個字元本來為‘t’,也只能亂碼顯示出來。

因此,可以使用Notepad++代替記事本。需要將Notepad++的預設編碼設定為UTF-8 without BOM即可;

windows內建記事本導致文字檔(UTF-8編碼)開頭三個字元亂碼問題

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.