c – VC在GCC中是否有编译选项,如“-fexec-charset”来设置执行字符集?

前端之家收集整理的这篇文章主要介绍了c – VC在GCC中是否有编译选项,如“-fexec-charset”来设置执行字符集?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
GCC具有-finput-charset,-fexec-charset和-fwide-exec-charset三个编译选项,用于指定“编译链”中涉及的特定编码.如下所示:
+--------+   -finput-charset     +----------+    -fexec-charset (or)    +-----+
| source | ------------------->  | compiler |  -----------------------> | exe |
+--------+                       +----------+    -fwide-exec-charset    +-----+

参考:GCC compiler options

我在这里发现了一个关于-finput-charset的问题:Specification of source charset encoding in MSVC++,like gcc “-finput-charset=CharSet”.但是我想知道VC是否有一个编译器选项,如GCC中的-fexec-charset来指定执行字符集.

我在Visual Studio中找到一个似乎相对的选项:项目属性/配置属性/常规/字符集.值为“使用Unicode字符集”.它在GCC中是否与-fexec-charset一样?这样我想将执行字符集设置为UTF-8.如何?

为什么要设置执行的编码?

我正在C中编写一个需要与数据库服务器通信的应用程序.而表的字符集是utf8.在构建一些测试后,测试将捕获在db表上的插入操作周围抛出的异常.例外情况告诉我,他们遇到不正确的字符串值.我认为这是由编码错误造成的? BTW有没有办法处理这个问题?

解决方法

AFAIK,VC没有命令行标志来让您指定一个UTF-8执行字符集.
但是它(偶尔)支持无证件
#pragma execution_character_set("utf-8")`

参考here.

要使用此编译指示获得命令行标志的效果,您可以在标题中编写pragma
文件,例如preinclude.h,并通过传递在每个编译中预先包含这个标题
国旗/ FI preinclude.h.见this documentation
如何从IDE设置此标志.

VC 2010中的pragma被支持,然后在VC 2012中被遗忘,并再次被支持在VC 2013

猜你在找的C&C++相关文章