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系统支持的所有可用的字符集编码。

最新文章

  1. 我的第一个HTML的程序
  2. IL命令
  3. javascript线程解释(setTimeout,setInterval你不知道的事)---转载
  4. Python按行读文件对比
  5. asp.net调用非托管dll,无法加载 DLL,找不到指定模块解决方法。
  6. C语言:类似linux内核的分等级DEBUG宏(打印宏)
  7. application19事件 20多少步骤 具体20多少只有微软知道!!!
  8. 基于Python的Webservice开发(二)-如何用Spyne开发Webservice
  9. ReadWriteLock读写锁(八)
  10. linux读取Windows的txt文件问题
  11. tail -f -n 0 /var/log/messages
  12. git 创建tag , 查看tag , 删除tag
  13. 在Android Studio添加本地aar包引用
  14. 20165214 预备作业3 Linux安装及学习
  15. 让Label等控件支持HTML格式的代码? 使用NSAttributedString:
  16. Android 开发服务类 01_ServletForXML
  17. 【Linux】LVM逻辑卷管理和RAID
  18. [收藏转]由于CredSSP加密Oracle修正 导致远程桌面报错处理
  19. ul标签的高度为0
  20. react-native第一次开发记录

热门文章

  1. c# 怎么更改DataTable 中某列的值?
  2. 关于Future
  3. 【python】-- Socket粘包问题 ,解决粘包的几种方法、socket文件下载,md5值检验
  4. Android 主线程和子线程通信问题
  5. 添加启动项及常用Windows+R
  6. C#练习DataReader
  7. 使用nginx进行负载均衡
  8. rails 注释
  9. MD5加密“破解”在.NET平台实现最基本的理解
  10. Render树、RenderObject与RenderLayer