加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 06:03:37 所属栏目:百科 来源:网络整理
导读:GCC具有-finput-charset,-fexec-charset和-fwide-exec-charset三个编译选项,用于指定“编译链”中涉及的特定编码.如下所示: +--------+ -finput-charset +----------+ -fexec-charset (or) +-----+| source | ------------------- | compiler | -----------
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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读