| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4850 人关注过本帖, 1 人收藏
标题:clang编译器在处理GBK编码且有中文字符的源文件时报编码警告 能否屏蔽
只看楼主 加入收藏
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
或者楼主给个文件来测试一下。

授人以渔,不授人以鱼。
2015-01-14 23:07
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
以下是引用TonyDeng在2015-1-14 22:58:12的发言:

Windows下控制台窗口cmd是可以显示utf8编码文字的:


下面是代码中所用的文件(下载后把最后的.zip删掉),它是一个utf8编码的文件。
文件太高级了 没法下载
2015-01-14 23:16
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
是很高级 我也没法下载
我的要求是说在C源文件是UTF-8编码
而且使用了超出了GBK范围的汉字比如(㛃 㳇 㵎……)

图片附件: 游客没有浏览图片的权限,请 登录注册

这虽然也能显示
但是每次都要调locale
很烦
而且经常会遇到屏幕刷新的问题

Only the Code Tells the Truth             K.I.S.S
2015-01-14 23:29
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
同样的程序要是不chcp 65001的话
就是这个情况
图片附件: 游客没有浏览图片的权限,请 登录注册

Only the Code Tells the Truth             K.I.S.S
2015-01-14 23:32
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
我第一次听见字符串的内容编码会影响编译的。

授人以渔,不授人以鱼。
2015-01-14 23:36
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
回复 25楼 TonyDeng
有的编译器不像高版本的VC++那么好胃口(这个好胃口也只是在IDE下面而不是单用cl) 什么编码的源文件都吃
clang默认是utf-8,用gbk有中文的话就报警
虽然编译也能通过但是很难看
rjsp版主给出的参数可以解决gbk报警的问题

你如果有办法把大字符的汉字在chcp 936的CMD环境下正常显示
无论你用什么办法
你都是大牛

我知道python和golang都有相应的方法
所用的方案还不一样
在C下我没见到过
不过也应该能做到
只是我不会
大体的思路上重写stdout

Only the Code Tells the Truth             K.I.S.S
2015-01-14 23:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
看这个图:
图片附件: 游客没有浏览图片的权限,请 登录注册


源文件包含GBK字符,就是“水滸傳”這三個字,這是擴展字符部分,GB2312是沒有的,而且,在cmd窗口中,我也把這個字符串打印出來了,同樣能顯示。後面的文字,是從一個utf8編碼的文本文件中讀出來顯示的。


[ 本帖最后由 TonyDeng 于 2015-1-14 23:49 编辑 ]

授人以渔,不授人以鱼。
2015-01-14 23:46
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
对我来说 Windows也好 *nix也好 不过是运行Emacs的环境 Emacs才是操作系统
2015-01-14 23:50
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
默認的窗口就是936編碼的,我沒改過任何東西:
图片附件: 游客没有浏览图片的权限,请 登录注册


授人以渔,不授人以鱼。
2015-01-14 23:51
longwu9t
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:732
专家分:2468
注 册:2014-10-9
收藏
得分:0 
你把大字符集的汉字写到C源文件里
用最简单的printf试试看

printf("%s\n", "㳇㛃这是个GBK以外的汉字测试");

Only the Code Tells the Truth             K.I.S.S
2015-01-14 23:52
快速回复:clang编译器在处理GBK编码且有中文字符的源文件时报编码警告 能否屏蔽
数据加载中...
 
   



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

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