首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSVC++中的源字符集编码规范,如gcc "-finput- charset =CharSet“

MSVC++中的源字符集编码规范,如gcc "-finput- charset =CharSet“
EN

Stack Overflow用户
提问于 2009-11-02 11:25:06
回答 5查看 7.8K关注 0票数 17

我想要创建一些处理编码的示例程序,特别是我想使用宽字符串,例如:

代码语言:javascript
复制
wstring a=L"grüßen";
wstring b=L"שלום עולם!";
wstring c=L"中文";

因为这些都是示例程序。

这是绝对微不足道的gcc,把源代码作为UTF-8编码的文本。但是,简单的编译在MSVC下不起作用。我知道我可以使用转义序列对它们进行编码,但我更愿意将它们保留为可读的文本。

是否有任何选项,我可以指定为"cl“的命令行开关,以使这项工作?有像gcc'c -finput-charset这样的命令行开关

如果不是,你会建议如何使文本对用户自然?

注意:将BOM添加到UTF-8文件不是一个选项,因为其他编译器无法编译它。

Note2:我需要它在MSVC版本>= 9 == VS 2008中工作

的真正答案是:没有解决方案

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-06-10 09:14:30

对于那些订阅“迟到总比从来没有好”的人来说,Visual 2015 (编译器的19版)现在支持这一点。

新的/source-charset命令行开关允许您指定用于解释源文件的字符集编码。它接受一个参数,可以是IANA或ISO字符集名称:

代码语言:javascript
复制
/source-charset:utf-8

或特定代码页的十进制标识符(前面有一个点):

代码语言:javascript
复制
/source-charset:.65001

正式的文档是这里,VisualC++团队博客上也有描述这些新选项的详细文章

还有一个互补的交换机,它以完全相同的方式工作,但控制如何在可执行文件中生成狭窄的字符和字符串文字。最后,有一个快捷开关/utf-8,它同时设置了/source-charset:utf-8/execution-charset:utf-8

这些命令行选项与旧的#pragma setlocale#pragma execution-character-set指令不兼容,它们全局应用于所有源文件。

对于停留在较早版本编译器上的用户,最好的选择仍然是使用BOM将源文件保存为UTF-8 (其他答案表明,IDE在保存时可以做到这一点)。编译器将自动检测到这一点,并进行适当的操作。GCC也是如此,他在源文件开始时也接受BOM,而不会窒息而死,因此这种方法在功能上是可移植的。

票数 15
EN

Stack Overflow用户

发布于 2009-11-02 12:03:53

打开File->Advances Save Options...,在编码组合中选择Unicode(UTF-8 with signature) - Codepage 65001。编译器将自动使用选定的编码。

根据微软的答案这里

如果您想要非ASCII字符,那么获取这些字符的“官方”和可移植的方法是使用\u (或\U)十六进制编码(我同意,这是非常丑陋和容易出错的)。 当编译器面对一个没有BOM的源文件时,编译器会在文件中预先读取一定的距离,以查看它是否能够检测到任何Unicode字符--它专门查找UTF-16和UTF-16BE --如果没有找到它们,那么它假设它有MBCS。我怀疑,在这种情况下,它回到了MBCS,这就是导致问题的原因。 显式确实是最好的,所以尽管我知道这不是一个完美的解决方案,我建议使用BOM。 乔纳森凯夫斯 可视化C++编译器团队。

好的解决方案是在资源文件中放置文本字符串。使用方便,携带方便。您可以使用本地化库(如gettext )来管理翻译。

票数 8
EN

Stack Overflow用户

发布于 2012-06-12 10:12:01

我们使用的流程:将文件保存为UTF8 8-使用BOM,在linux和windows之间共享相同的源代码,对于linux:通过编译命令对源文件进行预处理以删除BOM,在中间的非BOM文件上运行g++。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1660712

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档