| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2299 人关注过本帖
标题:c语言 宽字符(L),现在为什么不认了?是我的系统问题吗???
只看楼主 加入收藏
wzxiaodu
Rank: 1
等 级:新手上路
帖 子:32
专家分:2
注 册:2017-8-11
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:5 
c语言 宽字符(L),现在为什么不认了?是我的系统问题吗???
程序代码:
#include <stdio.h>
int main(int argc, char *argv[])
{
    wchar_t* wstr=L"中国";
    wprintf(L"%ls\n", wstr);
    return 0;
}


C-FREE 5   MinGW 编译
下面是错误提示:
[Error] C:\Users\Administrator\Documents\C-Free\Temp\未命名4.c:5:16: error: converting to execution character set: Illegal byte sequence
[Error]   wchar_t* wstr=L"中国";             ^~~~~~~

我印象中,以前这代码没有错,现在却错了,什么原因??
搜索更多相关主题的帖子: c语言 字符 系统 int C-FREE 
2018-07-23 20:15
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:20 
gcc默认源码是无bom头的utf8格式,如果不是你得用-finput-charset=指明正确的格式,例如-finput-charset=GBK

另外,不需要setlocale吗?
2018-07-23 20:52
wzxiaodu
Rank: 1
等 级:新手上路
帖 子:32
专家分:2
注 册:2017-8-11
收藏
得分:0 
回复 2楼 rjsp
程序代码:
#include <stdio.h>
#include <locale.h>

 
//编译连接加上  -fexec-charset=gbk -finput-charset=gbk 
int main(int argc, char *argv[])
{
    setlocale(LC_ALL,""); 
    char* str="中国";
    wchar_t* wstr=L"中国";
    printf("1:%s\n", str);
    wprintf(L"2:%ls\n", wstr);
    return 0;
}


[Error] C:\Users\Administrator\Documents\C-Free\Temp\未命名5.c:9:16: error: converting to execution character set: Illegal byte sequence
[Error]   wchar_t* wstr=L"中国";             ^~~~~~~

我找了以前能运行的代码,现在不行了!!??
2018-07-23 22:16
wzxiaodu
Rank: 1
等 级:新手上路
帖 子:32
专家分:2
注 册:2017-8-11
收藏
得分:0 
回复 2楼 rjsp
老大 上次那个SDKL LISTVIEW 问题的代码,我经你提醒修改后VS 2015没问题,可以分组了。
但 GCC 编译 不行 ,同样是加上 L""的这几行都出错了。。。
2018-07-23 22:20
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:0 
回复 4楼 wzxiaodu
既然是 L"中文字符出错",那必然是文字编码的原因呀,
-fexec-charset=gbk -finput-charset=gbk 不行,那你的源文件是不是 gbk 编码呢
实在不行,你就将文件保存为 utf8 吧,别折腾了
2018-07-24 09:42
wzxiaodu
Rank: 1
等 级:新手上路
帖 子:32
专家分:2
注 册:2017-8-11
收藏
得分:0 
回复 5楼 rjsp
大神,我错了,把GBK 改成 GB2312就行了!
2018-07-25 10:38
快速回复:c语言 宽字符(L),现在为什么不认了?是我的系统问题吗???
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015662 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved