
VC读入unicode
问题很简单,一个文件是Unicode编码。请帮忙写一个完整示例,读入并判断其中的字符是否是"这是Unicode编码"。写成控制台输出Yes/No的程序即可。不用复制大段的...
问题很简单,一个文件是Unicode编码。
请帮忙写一个完整示例,读入并判断其中的字符是否是"这是Unicode编码"。
写成控制台输出Yes/No的程序即可。不用复制大段的理论过来,我需要完整示例
我想说判断其中的字符是否是"这是Unicode编码"和判断其中的字符是否是Unicode编码是有区别的。 展开
请帮忙写一个完整示例,读入并判断其中的字符是否是"这是Unicode编码"。
写成控制台输出Yes/No的程序即可。不用复制大段的理论过来,我需要完整示例
我想说判断其中的字符是否是"这是Unicode编码"和判断其中的字符是否是Unicode编码是有区别的。 展开
展开全部
判断一个文本文件是否为unicode编码比较简单,
如果开头两个字节是0xFFFE,那么就是Unicode,否则是ANSI。
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#include <wchar.h>
int main()
{
//把"这是Unicode编码"用Unicode编码写入一个文件
FILE *file = fopen("test.txt","wb");
wchar_t wstr[] = L"这是Unicode编码";
wchar_t strSign = 0xfeff;
int len = wcslen(wstr);
fwrite(&strSign,1,2,file);
fwrite(wstr,1,len*2,file);
fclose(file);
//打开这个文件,并且读出其中的数据显示
file = fopen("test.txt","rb");
int nFileLen;
wchar_t buffer[100] = {0}; //注意,文件不要超过99个字符
if(file)
{
fseek(file,0,SEEK_END);
nFileLen = ftell(file);
fseek(file,0,SEEK_SET);
fread(buffer,1,nFileLen,file);
}
else
{
printf("file does not exists.\n");
getchar();
return 0;
}
if(buffer[0] == 0xfeff)
{
printf("it's a Unicode file\n");//is unicode
char strBuffer[200]={0};
if (!setlocale(LC_ALL, "chs"))
{
perror("chs");
getchar();
return 0;
}
wcstombs(strBuffer,&buffer[1] , 200);
printf("%s",strBuffer);
}
else
printf("it's not a Unicode file\n");//not unicode
fclose(file);
getchar();
return 0;
}
VC 2008 下调试通过。
如果开头两个字节是0xFFFE,那么就是Unicode,否则是ANSI。
#include <stdlib.h>
#include <stdio.h>
#include <locale.h>
#include <wchar.h>
int main()
{
//把"这是Unicode编码"用Unicode编码写入一个文件
FILE *file = fopen("test.txt","wb");
wchar_t wstr[] = L"这是Unicode编码";
wchar_t strSign = 0xfeff;
int len = wcslen(wstr);
fwrite(&strSign,1,2,file);
fwrite(wstr,1,len*2,file);
fclose(file);
//打开这个文件,并且读出其中的数据显示
file = fopen("test.txt","rb");
int nFileLen;
wchar_t buffer[100] = {0}; //注意,文件不要超过99个字符
if(file)
{
fseek(file,0,SEEK_END);
nFileLen = ftell(file);
fseek(file,0,SEEK_SET);
fread(buffer,1,nFileLen,file);
}
else
{
printf("file does not exists.\n");
getchar();
return 0;
}
if(buffer[0] == 0xfeff)
{
printf("it's a Unicode file\n");//is unicode
char strBuffer[200]={0};
if (!setlocale(LC_ALL, "chs"))
{
perror("chs");
getchar();
return 0;
}
wcstombs(strBuffer,&buffer[1] , 200);
printf("%s",strBuffer);
}
else
printf("it's not a Unicode file\n");//not unicode
fclose(file);
getchar();
return 0;
}
VC 2008 下调试通过。
展开全部
FILE *file = fopen(path,"rb");
char buffer[2] = {0};
if(file)
{
fread(buffer,1,2,file);
fclose(file);
}
else
{
printf("file does not exists.\n");
return;
}
if(buffer[0] == 0xFF && buffer[1] == 0xFE)
printf("yes\n");//is unicode
else
printf("no\n");//not unicode
/*仅适用于windows unicode文件*/
char buffer[2] = {0};
if(file)
{
fread(buffer,1,2,file);
fclose(file);
}
else
{
printf("file does not exists.\n");
return;
}
if(buffer[0] == 0xFF && buffer[1] == 0xFE)
printf("yes\n");//is unicode
else
printf("no\n");//not unicode
/*仅适用于windows unicode文件*/
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询