codeblocks默认源代码文件编码根据OS而定,编译时编码UTF-8。 在你不更改任何codeblocks配置时:                    在WINDOWS中:源代码——WINDOWS-936(即GBK),编译后文件默认UTF-8 而输出windows会按GBK来解释             ,所以从GBK->UTF-8->GBK就是乱码; 在LINUX中:源代码——UTF-8,自然从源代码到编译到输出都是UTF-8,因此没有乱码; WINDOWS中:设置如下settings->compiler->Other options中增加2条命令 -finput-charset=GBK编译时用GBK格式 不指定默认UTF-8 -fexec-charset=GBK生成执行文件时用GBK格式  不指定默认UTF-8

UTF-8是变长编码,一个字符可能是1至4字节,处理起来不太方便。 于是Linux等平台也提供了wchar_t类型,只不过它是32位的,在Windows平台中它是16位。

为了保证代码的可移植性,推荐使用UTF-8编码来保存代码文件。 因现在Linux等类UNIX平台默认使用UTF-8编码,gcc等编译器也是默认使用UTF-8编码。 而且它们既支持“不带BOM的UTF-8”(byte order mark,字节序标记),又支持“带BOM的UTF-8”。 VC++ 2003(或更高)开始支持“带BOM的UTF-8”编码的代码文件,但不支持“不带BOM的UTF-8”编码的代码文件 ,会被误认为系统默认编码(如简体中文平台上会误认为GBK编码)。

1.4 _tmain入口函数问题   标准C使用main函数作为程序入口,其格式为——int main(int argc, char* argv[])   VC++考虑到到TCHAR类型的命令行参数,于是又定义_tmain程序入口,其格式为——int _tmain(int argc, TCHAR* argv[])   目前VC++对_tmain的支持较好,而MinGW等编译器对_tmain较差,其只支持C标准的main。     如果想用_tmain则需要在工程中引入 https://github.com/coderforlife/mingw-unicode-main.h文件    // tchar.h中有类似如下的定义    #ifdef   _UNICODE      #define   _tmain   wmain      #define   _tWinMain   wWinMain      #else      #define   _tmain   main      #define   _tWinMain   WinMain      #endif

C 和 C++ 的标准库分别有自己的 locale 操作方法, C 标准库的 locale 设定函数是 setlocale(), 而 C++ 标准库有 locale 类和流对象的 imbue() 方法 #include <locale.h> char* setlocale(int category, const char* locale);

在Linux下,可以使用locale -a 命令查看系统中所有已配置的 locale。 用不带选项的 locale 命令查看当前 Shell 中活动的 locale。 用 locale -m 命令查看locale系统支持的所有可用的字符集编码。

codeblocks如何支持_tmain?可移植代码的编码推荐的更多相关文章

  1. 传感器(2)常用api简介及列出当前设备支持的传感器代码

    Android SDK提供了Android sensor framework,可以用来访问当前Android设备内置的传感器. ASF提供了很多类和接口,可以帮助我们完成各种与传感器有关的任务. 例如 ...

  2. 支持Git的代码托管网站

    支持Git的代码托管网站: https://github.com/https://code.google.com http://www.codeplex.com/ http://git.oschina ...

  3. Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式之一,大家可以查看RFC2045-RFC2049,上面有MIME的详细规范.Base64编码可用于在HTTP环境下传递较长的标识信息.例如 ...

  4. C++静态代码分析工具推荐——PVS-Studio

    长假归来,最近一直没更新,节前本来就想写这篇了,一直到今天才有时间. 关于静态代码分析在维基百科上可以查到很详细的介绍:https://en.wikipedia.org/wiki/List_of_to ...

  5. 代码高亮插件推荐——SyntaxHighlighter++

    SyntaxHighlighter++这个插件的最大的优点就是可以在编辑器的下方有一个输入框,里面可以输入代码,然后插入到文章中.就不用编辑文章的时候,在可视化和文本之间来回切换了.非常适合不熟悉ht ...

  6. redis安装 phpredis Jedis 扩展的实现及注意事项,php,java,python相关插件安装实例代码和文档推荐

    redis安装 phpredis Jedis 扩展的实现及注意事项,php,java,python相关插件安装实例代码和文档推荐 1.Redis 官方网站下载: http://redis.io/dow ...

  7. 洗礼灵魂,修炼python(3)--从一个简单的print代码揭露编码问题,运行原理和语法习惯

    前期工作已经准备好后,可以打开IDE编辑器了,你可以选择python自带的IDLE,也可以选择第三方的,这里我使用pycharm--一个专门为python而生的IDE 按照惯例,第一个python代码 ...

  8. Discuz代码研究-编码规范

    Discuz中的编码规范很值得PHP开发人员借鉴.里面既介绍了编码时代码标记,注释,书写规则,命名原则等方面基础的内容,对代码的安全性,性能,兼容性,代码重用,数据库设计,数据库性能及优化作了阐述,这 ...

  9. 分布式消息总线,基于.NET Socket Tcp的发布-订阅框架之离线支持,附代码下载

    一.分布式消息总线以及基于Socket的实现 在前面的分享一个分布式消息总线,基于.NET Socket Tcp的发布-订阅框架,附代码下载一文之中给大家分享和介绍了一个极其简单也非常容易上的基于.N ...

随机推荐

  1. openCV图像形态学

    #include <cv.h> #include <highgui.h> #include <stdio.h> //平滑处理 int main() { IplIma ...

  2. spring mvc中的@PathVariable

    spring mvc中的@PathVariable是用来获得请求url中的动态参数的,十分方便,复习下: @Controller public class TestController { @Requ ...

  3. POJ 286 Y2K Accounting Bug【简单暴力】

    链接: http://poj.org/problem?id=2586 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=26733#probl ...

  4. 九度OJ 1209:最小邮票数 (遍历)

    时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:2252 解决:741 题目描述: 有若干张邮票,要求从中选取最少的邮票张数凑成一个给定的总值.     如,有1分,3分,3分,3分,4分五 ...

  5. MYSQL:基础——触发器

    MYSQL基础——触发器 引入触发器 什么是触发器 如果你想要某条语句(或某些语句)在事件发生时自动执行.比如: 每当订购一个产品时,都从库存数量中减去订购的数量:无论何时删除一行,都在某个存档表中保 ...

  6. javascript常见的20个问题与解决方法

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  7. OC实现将N个数随机排列

    + (NSMutableArray *)randArray : (NSMutableArray *)arrayM { NSMutableArray *resultM = [[NSMutableArra ...

  8. apache下配置多域名多目录的应用

    引言:阿里云centos apache web服务器中配置不同域名访问不同的目录,达到类似增加虚拟主机的效果: 案例: 如有2个www.a.com ,www.b.com 域名, 访问www.a.com ...

  9. Idea中配置Tomcat7的JNDI

    1.进入目录 D:\apache-tomcat-7.0.73\conf\Catalina\localhost 添加hello.xml ,内容为: <Context path="/hel ...

  10. Linux下查看Python安装了哪些脚本模块

    Linux下查看Python安装了哪些脚本模块 1.什么是rpm ? rpm 即RedHat Package Management,是RedHat的发明之一 .现在包括OpenLinux.fedora ...