免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3334 | 回复: 8
打印 上一主题 下一主题

[其他] 求助关于NetBeans编辑文件时编码的问题。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-02-06 17:34 |只看该作者 |倒序浏览
我用NB创建了一个工程,编码是UTF-8 无BOM的。又用VS导入这些文件,创建了一个新的Visual Studio工程。
但是当这些文件编码是UTF-8 无BOM时,VS编译通不过,转成UTF-8 BOM时,NetBeans IDE又会显示出BOM。
使用UTF-16编码的话,GCC又编译不通过。
使用-finput-charset参数编译的话,我的源码是没问题,但是源码中#include的库文件又会报编码错误。
请教下,有没有什么方法能一举两得呢?谢谢各位了

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
2 [报告]
发表于 2014-02-06 18:25 |只看该作者
我记得VS是可以选择不用BOM的。
它认没有BOM的UTF-8

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
3 [报告]
发表于 2014-02-06 18:25 |只看该作者
不知你用的什么版本的VS

论坛徽章:
0
4 [报告]
发表于 2014-02-06 18:31 |只看该作者
本帖最后由 csersoft 于 2014-02-06 18:33 编辑
folklore 发表于 2014-02-06 18:25
我记得VS是可以选择不用BOM的。
它认没有BOM的UTF-8


VS IDE是认无BOM UTF8,但是它的编译器不认。我用的VS 2013,VS 2012也测试过。

cl 没有提供类似gcc指定编码方式的编译选项,只能使用默认值或靠自动识别:
以下内容摘自网上:

对应gcc的-finput-charset,cl 能自动识别源文件的编码方式,cl 支持的源文件编码方式有:UTF-16(BE,LE均可,有无BOM均可),UTF-8(带BOM),除此之外的源文件均认为是ANSI编码方式( 包括不带BOM的UTF-8 )。所以使用VC编译不带BOM的UTF-8文件时要特别注意,vc会将此文件当做ANSI也就是GBK编码格式。否则经常会出这样的警告:该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失。


对应gcc的-fwide-exec-charset, cl 固定使用UTF-16编码方式。
对应gcc的-fexec-charset, cl 固定使用ANSI编码方式。


不知道VS的CL有没有类似GCC 的-finput-charset的参数。

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
5 [报告]
发表于 2014-02-06 18:32 |只看该作者
回复 4# csersoft


    http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33415#c1
据说gcc4.3开始,可以认有BOM的源文件了。

论坛徽章:
0
6 [报告]
发表于 2014-02-06 18:34 |只看该作者
回复 5# folklore

GCC是认带BOM UTF8,可是NetBeans不认带BOM的,NetBeans IDE会显示BOM,这个是头疼的问题。

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
7 [报告]
发表于 2014-02-06 18:39 |只看该作者
试了一下, 果然编译器不认, 编辑器认, 吭爷啊。
VS2010, 不知更高版本的如何。

论坛徽章:
0
8 [报告]
发表于 2014-02-06 18:41 |只看该作者
回复 7# folklore


    我的是VS 2012、VS 2013都不认,低版本的未测试过

论坛徽章:
0
9 [报告]
发表于 2014-02-06 18:51 |只看该作者
回复 7# folklore


    已经解决,折衷源文件全部采用GBK,虽然有点差强人意,还是谢谢了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP