【home88一必发】发端七个字符乱码难题,windows自带记事本导致文本文件

by admin on 2019年3月10日

转自:

windows自带记事本导致文本文件(UTF-8编码)起初八个字符乱码难题,文本文件utf-8

转自:

在windows平台下,使用系统的记事本以UTF-8编码格式存款和储蓄了三个文书文件,不过由于Microsoft开发记事本的团队利用了一个要命怪异的表现来保存UTF-8编码的文件,它们班门弄斧地在种种文件开头添加了0xefbbbf(十六进制)的字符,所以大家就会蒙受很多不知所云的标题,比如,网页第①行只怕会彰显四个“?”,明明正确的顺序一编写翻译就报出语法错误,等等。

上面为一段测试程序,由记事本编辑的文书文件导致文件开头前四个字符乱码。

home88一必发 1

#include <stdio.h>
#define MAX_LEN 100

int 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;
}

home88一必发 2

 

home88一必发 ,【home88一必发】发端七个字符乱码难题,windows自带记事本导致文本文件。【home88一必发】发端七个字符乱码难题,windows自带记事本导致文本文件。输入文件:

home88一必发 3

tsinghua press
mp18
evaluating method for the double image
jiaoyuxvshi
balancing mechanism
hthr
amplification
bionic optimization algorithm
a r l
tcb

home88一必发 4

 

出口文件:

home88一必发 5

str = 锘縯singhua press
ffffffef  ffffffbb  ffffffbf  74  73  69  6e  67  68  75  61  20  70  72  65  73
  73  a

str = mp18
6d  70  31  38  a

str = evaluating method for the double image
65  76  61  6c  75  61  74  69  6e  67  20  6d  65  74  68  6f  64  20  66  6f
72  20  74  68  65  20  64  6f  75  62  6c  65  20  69  6d  61  67  65  a

str = jiaoyuxvshi
6a  69  61  6f  79  75  78  76  73  68  69  a

str = balancing mechanism
62  61  6c  61  6e  63  69  6e  67  20  6d  65  63  68  61  6e  69  73  6d  a

str = hthr
68  74  68  72  a

str = amplification
61  6d  70  6c  69  66  69  63  61  74  69  6f  6e  a

str = bionic optimization algorithm
62  69  6f  6e  69  63  20  6f  70  74  69  6d  69  7a  61  74  69  6f  6e  20
61  6c  67  6f  72  69  74  68  6d  a

str = a r l
61  20  72  20  6c  a

str = tcb
74  63  62  a

home88一必发 6

 

笔者们能够窥见文件开首四个字符乱码,各个汉字占用四个字符,因而第四个字符本来为‘t’,也只能乱码展现出来。

由此,能够应用Notepad++代替记事本。必要将Notepad++的默许编码设置为UTF-8
without BOM即可;

home88一必发 7

转自:
在windows平台下…

转自:

在windows平台下,使用系统的记事本以UTF-8编码格式存款和储蓄了3个文件文件,不过出于Microsoft开发记事本的团体采纳了一个这一个古怪的行事来保存UTF-8编码的文书,它们布鼓雷门地在每种文件伊始添加了0xefbbbf(十六进制)的字符,所以大家就会赶上不少不知所云的题材,比如,网页第②行只怕会显得二个“?”,明明正确的次第②编写翻译就报出语法错误,等等。

在windows平台下,使用系统的记事本以UTF-8编码格式存款和储蓄了一个文件文件,不过由于Microsoft开发记事本的团伙接纳了贰个不行稀奇的行事来保存UTF-8编码的文本,它们自作聪明地在各样文件开首添加了0xefbbbf(十六进制)的字符,所以我们就会碰着重重不知所云的难点,比如,网页第贰行或许会来得3个“?”,明明正确的次第1编写翻译就报出语法错误,等等。

在windows平台下,使用系统的记事本以UTF-8编码格式存款和储蓄了三个文书文件,可是由于Microsoft开发记事本的团队选拔了四个分外好奇的一言一行来保存UTF-8编码的公文,它们布鼓雷门地在各类文件起头添加了0xefbbbf(十六进制)的字符,所以我们就会赶上不少不知所云的题材,比如,网页第三行只怕会显得八个“?”,明明正确的次序一编写翻译就报出语法错误,等等。

上边为一段测试程序,由记事本编辑的文件文件导致文件开端前四个字符乱码。

上面为一段测试程序,由记事本编辑的文书文件导致文件早先前几个字符乱码。

下边为一段测试程序,由记事本编辑的文书文件导致文件起先前五个字符乱码。

#include <stdio.h>
#define MAX_LEN 100

int 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;
}

home88一必发 8

home88一必发 9

 

#include <stdio.h>
#define MAX_LEN 100

int 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;
}
#include <stdio.h>
#define MAX_LEN 100

int 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;
}

输入文件:

home88一必发 10

home88一必发 11

tsinghua press
mp18
evaluating method for the double image
jiaoyuxvshi
balancing mechanism
hthr
amplification
bionic optimization algorithm
a r l
tcb

 

 

 

输入文件:

输入文件:

输出文件:

home88一必发 12

home88一必发 13

str = 锘縯singhua press
ffffffef  ffffffbb  ffffffbf  74  73  69  6e  67  68  75  61  20  70  72  65  73
  73  a

str = mp18
6d  70  31  38  a

str = evaluating method for the double image
65  76  61  6c  75  61  74  69  6e  67  20  6d  65  74  68  6f  64  20  66  6f
72  20  74  68  65  20  64  6f  75  62  6c  65  20  69  6d  61  67  65  a

str = jiaoyuxvshi
6a  69  61  6f  79  75  78  76  73  68  69  a

str = balancing mechanism
62  61  6c  61  6e  63  69  6e  67  20  6d  65  63  68  61  6e  69  73  6d  a

str = hthr
68  74  68  72  a

str = amplification
61  6d  70  6c  69  66  69  63  61  74  69  6f  6e  a

str = bionic optimization algorithm
62  69  6f  6e  69  63  20  6f  70  74  69  6d  69  7a  61  74  69  6f  6e  20
61  6c  67  6f  72  69  74  68  6d  a

str = a r l
61  20  72  20  6c  a

str = tcb
74  63  62  a
tsinghua press
mp18
evaluating method for the double image
jiaoyuxvshi
balancing mechanism
hthr
amplification
bionic optimization algorithm
a r l
tcb
tsinghua press
mp18
evaluating method for the double image
jiaoyuxvshi
balancing mechanism
hthr
amplification
bionic optimization algorithm
a r l
tcb

 

home88一必发 14

home88一必发 15

咱俩得以窥见文件开头八个字符乱码,各样汉字占用多少个字符,因而第三个字符本来为‘t’,也只可以乱码展现出来。

 

 

由此,能够行使Notepad++代替记事本。要求将Notepad++的私下认可编码设置为UTF-8
without BOM即可;

输出文件:

输出文件:

home88一必发 16

home88一必发 17

home88一必发 18

str = 锘縯singhua press
ffffffef  ffffffbb  ffffffbf  74  73  69  6e  67  68  75  61  20  70  72  65  73
  73  a

str = mp18
6d  70  31  38  a

str = evaluating method for the double image
65  76  61  6c  75  61  74  69  6e  67  20  6d  65  74  68  6f  64  20  66  6f
72  20  74  68  65  20  64  6f  75  62  6c  65  20  69  6d  61  67  65  a

str = jiaoyuxvshi
6a  69  61  6f  79  75  78  76  73  68  69  a

str = balancing mechanism
62  61  6c  61  6e  63  69  6e  67  20  6d  65  63  68  61  6e  69  73  6d  a

str = hthr
68  74  68  72  a

str = amplification
61  6d  70  6c  69  66  69  63  61  74  69  6f  6e  a

str = bionic optimization algorithm
62  69  6f  6e  69  63  20  6f  70  74  69  6d  69  7a  61  74  69  6f  6e  20
61  6c  67  6f  72  69  74  68  6d  a

str = a r l
61  20  72  20  6c  a

str = tcb
74  63  62  a
str = 锘縯singhua press
ffffffef  ffffffbb  ffffffbf  74  73  69  6e  67  68  75  61  20  70  72  65  73
  73  a

str = mp18
6d  70  31  38  a

str = evaluating method for the double image
65  76  61  6c  75  61  74  69  6e  67  20  6d  65  74  68  6f  64  20  66  6f
72  20  74  68  65  20  64  6f  75  62  6c  65  20  69  6d  61  67  65  a

str = jiaoyuxvshi
6a  69  61  6f  79  75  78  76  73  68  69  a

str = balancing mechanism
62  61  6c  61  6e  63  69  6e  67  20  6d  65  63  68  61  6e  69  73  6d  a

str = hthr
68  74  68  72  a

str = amplification
61  6d  70  6c  69  66  69  63  61  74  69  6f  6e  a

str = bionic optimization algorithm
62  69  6f  6e  69  63  20  6f  70  74  69  6d  69  7a  61  74  69  6f  6e  20
61  6c  67  6f  72  69  74  68  6d  a

str = a r l
61  20  72  20  6c  a

str = tcb
74  63  62  a

home88一必发 19

home88一必发 20

 

 

我们能够发现文件初叶八个字符乱码,各类汉字占用八个字符,因此第陆个字符本来为‘t’,也不得不乱码呈现出来。

小编们能够发现文件早先多少个字符乱码,各个汉字占用多个字符,由此第⑥个字符本来为‘t’,也不得不乱码突显出来。

为此,能够采用Notepad++代替记事本。要求将Notepad++的暗许编码设置为UTF-8
without BOM即可;

由此,能够选择Notepad++代替记事本。供给将Notepad++的私下认可编码设置为UTF-8
without BOM即可;

home88一必发 21

home88一必发 22

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图