转自:

windows自带记事本导致文本文件(UTF-8编码)开端多个字符乱码问题,文本文件utf-8

起来多少个字符乱码问题,windows自带记事本导致文本文件。转自:

在windows平台下,使用系统的记事本以UTF-8编码格式存储了一个文本文件,可是由于Microsoft开发记事本的团体接纳了一个相当好奇的一举一动来保存UTF-8编码的文书,它们自作聪明地在各种文件初阶添加了0xefbbbf(十六进制)的字符,所以大家就会赶上重重不知所云的题材,比如,网页第一行可能会彰显一个“?”,明明正确的次序一编译就报出语法错误,等等。

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

澳门金沙国际 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;
}

澳门金沙国际 2

澳门金沙国际 , 

输入文件:

澳门金沙国际 3

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

澳门金沙国际 4

 

输出文件:

澳门金沙国际 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

澳门金沙国际 6

 

俺们得以窥见文件先导多少个字符乱码,每个汉字占用三个字符,由此第4个字符本来为‘t’,也只可以乱码展现出来。

就此,可以拔取Notepad++代替记事本。须求将Notepad++的默许编码设置为UTF-8
without BOM即可;

澳门金沙国际 7

转自:
在windows平台下…

转自:

在windows平台下,使用系统的记事本以UTF-8编码格式存储了一个文书文件,不过由于Microsoft开发记事本的集团选取了一个非凡古怪的表现来保存UTF-8编码的文件,它们布鼓雷门地在各种文件最先添加了0xefbbbf(十六进制)的字符,所以我们就会赶上很多不堪设想的题材,比如,网页第一行可能会突显一个“?”,明明正确的程序一编译就报出语法错误,等等。

在windows平台下,使用系统的记事本以UTF-8编码格式存储了一个文本文件,可是由于Microsoft开发记事本的团体利用了一个不胜怪异的作为来保存UTF-8编码的公文,它们班门弄斧地在各样文件开首添加了0xefbbbf(十六进制)的字符,所以大家就会赶上很多玄而又玄的题目,比如,网页第一行可能会展示一个“?”,明明正确的次序一编译就报出语法错误,等等。

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

澳门金沙国际 8

澳门金沙国际 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;
}

输入文件:

澳门金沙国际 10

澳门金沙国际 11

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

 

 

 

输入文件:

输入文件:

输出文件:

澳门金沙国际 12

澳门金沙国际 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

 

澳门金沙国际 14

澳门金沙国际 15

我们得以窥见文件伊始多少个字符乱码,每个汉字占用七个字符,因而第4个字符本来为‘t’,也只好乱码展现出来。

 

 

由此,可以行使Notepad++代替记事本。必要将Notepad++的默认编码设置为UTF-8
without BOM即可;

输出文件:

出口文件:

澳门金沙国际 16

澳门金沙国际 17

澳门金沙国际 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

澳门金沙国际 19

澳门金沙国际 20

 

 

我们可以发现文件开头几个字符乱码,每个汉字占用五个字符,因而第4个字符本来为‘t’,也只可以乱码突显出来。

大家可以发现文件开端多少个字符乱码,每个汉字占用五个字符,因而第4个字符本来为‘t’,也只能乱码显示出来。

为此,可以应用Notepad++代替记事本。须要将Notepad++的默认编码设置为UTF-8
without BOM即可;

故而,可以动用Notepad++代替记事本。须求将Notepad++的默许编码设置为UTF-8
without BOM即可;

澳门金沙国际 21

澳门金沙国际 22

相关文章