积极答复者
VS2008打开项目源代码中有乱码,且不能通过编译。

问题
-
这个情况之前也出现过,这次是编译 tinyxml库时出现, 启动解决方案后,很多源文件因为含有不能用 cp936解码的字符,因而显示乱码。不过按我的理解编译应该是没有问题的啊?
找到错误的地方发现字符串的乱码:
const char * str = "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>" "<?" "C鰊t鋘t咪鳇闹? "</?" ;
我感觉应该是VS在打开文件是自动做了编解码工作,因而对原有文件进行了修改? 请问如何解决? (确定不是源码本身的问题,都是官网下载的,而且以前编译其他工程也出现过类似情况,因为出错地方少,手动修改解决了)
PS:我的平台是 Windows7 64位 VS2008
答案
-
你好!
你的字符串常量不能分开几行写,如果要一行写不下,可以用"+"来连接字符串!
周雪峰- 已标记为答案 YiChun Chen 2009年10月27日 7:54
全部回复
-
用记事本打开文件 另存为utf-8字符集编码
Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://blog.tanging.net -
你好!
周版主和Raymond版主的建议都很不错,你可以尝试一下。
另外,你看看这两篇博客,试试这些方法看看有没有效果。
http://blog.csdn.net/kevinojt/archive/2008/01/02/2009619.aspx
http://www.cnblogs.com/RChen/archive/2006/10/17/vs2k5_issue.html
希望对你有所帮助。
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us. -
感谢大家的回复。 昨天一天没在线,没有及时回复,抱歉。
上面的方法我都试了,不过仍然有问题。
现在问题是,"xmltest.cpp"文件有乱码,且不能通过编译,但无论我在记事本或VS中选择utf-8或者unicode编码保存它,然后再打开,乱码仍然存在,且不能编译通过。
正好出现乱码这块就是为了解析该乱码字符串的代码,有表明编码方式为ISO-8859-1,就是Latin-1(这个编码好像欧美很常用?), 我在VS中找到了latin-3打开,然后显示
const char* str =
"<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>"
"<ä>"
"CöntäntßäöüÄÖÜ"
"</ä>";
这个应该就是要显示的字符,但是显示正常,编译仍然有问题,仍提示 error C2001: 常量中有换行符
我感觉应该是打开时,除了编码不同外,可能行尾设置也有问题。
再试了几次后,解决了编译问题。
使用VS中的高级保存选项将文件保存为 编码:UTF-8,代签名。行尾: Windows (CR LF)
然后编译,出现一些warning,但是可以编译成功了。(编辑器会显示一些乱码)
不过如果我编码设为: latin-3,行尾:Windows (CR LF) ,则仍然提示有error C2001: 常量中有换行符 错误。
现在不清楚这个保存文件时设置的行尾是什么意思,也是要修改文件的吗?
-
你好!
你的字符串常量不能分开几行写,如果要一行写不下,可以用"+"来连接字符串!
周雪峰- 已标记为答案 YiChun Chen 2009年10月27日 7:54