windows MinGW gcc 编译乱码问题
问题描述
一般很多编辑器默认都是保存成utf-8文件,然而在输出中文的时候出现了乱码?另外试了其他方法,有的乱码,有的不乱?
MinGW gcc 编译 utf-8 文件的时候乱码
MinGW gcc 编译 gbk 文件的时候正常
MinGW gcc 编译 utf-8 文件 -fexec-charset=gbk 显示中文正常
-finput-charset用来指定输入文件的的字符编码,如果不指定,将无法将L“中文"这样的字符正确转化为宽字符。相反,未指定输入文件的字符编码时,MinGW编译环境下的gcc将按本地字符编码解析源文件,将普通字符串仍然按照文件使用的本地字符编码编入程序,并将含有宽字符标量L的字符串按照本地编码来识别并转为UTF-8编码(很奇怪,它不是转为UNICODE编码,反而,在指定了源文件的字符集之后却转为了UTF-16编码。同时,这种不指定源文件编码方式却使用宽字符标量L指明编译器要将特定字符串转换成UNICODE编码的行为将会带来一个警告,而不是编译报错)。
-fexec-charset指定了字符串所使用的格式。
比如说,如果源文件保存的是GBK格式的,那么编译成程序时,其中的字符串就是GBK编码的。但是如果你的程序其实需要字符串按UTF-8来编码,那么就可以指定编译选项-fexec-charset=UTF-8 -finput-charset=GBK
另外,windows中常见的UNICODE编码在这里应该写成UTF-16。linux中的UNICODE编码相应的就是UTF32了。
-fwide-exec-charset指定了C\C++中使用宽字符时的格式,默认的就是UTF-16或者UTF32,取决于你的系统中使用的宽字符格式。(正如上面说的,windows使用UTF16的UNICODE编码,它是UCS2字符集的一个编编码格式;linux使用UTF32编码,是UCS4的一个编码格式。相应的,windows中的编译器一般将wchar_t定为2个字节宽,而linux中的编译器一般定义wchar_t为4字节宽。)
windows MinGW gcc 编译乱码问题的更多相关文章
- windows通过gcc编译代码
1.将gcc添加到环境变量 2.检查gcc是否安装成功 cmd下输入gcc –v 3.cd进入需要编译源文件的目录 4.dir查看当前目录下是否有需要编译的文件(linux下用ls) 5.编译文件(H ...
- 【转载】在windows下使用gcc编译jni的简单教程
转自:http://veikr.com/201207/windows_gcc_jni.html 1.安装MinGW,这个可以为windows提供gcc编译环境. 到http://sourceforge ...
- GCC编译C代码
C程序的编译过程 常用文件的后缀名: gcc编译c代码 1.gcc 常用编译选项: 2.gcc编译方法 testc.c: #include <stdio.h> int main ...
- windows & gcc & mingw & mysy 编译 openssl
今天有一个项目需要使用到 https, 以前一直用的都是http请求, 用 socket() 实现 https 请求我还真是头一回遇到. 先网上搜索了一下相关资料,明白了 https 相比较 http ...
- Qt for Windows:Qt 5.4.0 MinGW 静态编译版本制作 (转)
大致流程: 1.安装Qt(源码版)以及其他必要的环境 2.编译/安装 3.配置 4.使用 ----------正文分割线---------- 1.安装Qt(源码版) 1.1 下载Qt(两个地址二选一即 ...
- GCC 编译 Windows API 程序
前言 这学期学可视化程序设计,要使用 Windows API 绘制界面,由于笔者的笔记本硬盘太小,无法装臃肿的 VS(主要是不想装),也不想用 VC++ 6.0,所以就选用 GCC 来编译. 安装 m ...
- 在Windows下使用MinGW静态编译Assimp
使用MinGW静态编译Assimp 到了5月份了,没有写一篇日志,于是自己从知识库里面拿出一篇文章充数吧.这次将要解说怎样在Windows下使用MinGW静态编译Assimp. Assimp是眼下比較 ...
- 在Windows通过使用MinGW静态编译Assimp
使用MinGW静态编译Assimp 到了5月份了.没有写一篇日志,于是自己从知识库里面拿出一篇文章充数吧.这次将要解说怎样在Windows下使用MinGW静态编译Assimp. Assimp是眼下比較 ...
- windows 7下mingw+msys编译ffmpeg
windows 7下mingw+msys编译ffmpeg 1-->下载安装MingW,mingw-get-inst-20120426.exe http://sourceforge.ne ...
随机推荐
- CF1174F Ehab and the Big Finale(交互+剖分)
做法 \(x\)为隐藏节点,\(dep_x=d(1,x)\) \((1)\):\(u=1\) \((2)\):重链剖分,比如\(v\)为\(u\)的重链底部,查询\(dis(x,v)\)的长度,\(y ...
- C++标准库分析总结(一)
之前学习过标准库,最近身边有人问到相关话题,故在此做一个总结 1 标准库介绍 C++标准库:C++ Standard Library C++标准模板库:Standard Template Librar ...
- expect 实例
[root@runstone ssh_lianxi]# cat expect.sh #!/usr/bin/env expect } { #判断命令行参数的个数 send_user "usag ...
- 怎么样修改小程序分享的title/onShareAppMessage
onShareAppMessage: function (res) { if (res.from === 'button') { // 来自页面内转发按钮 console.log(res.target ...
- GitHub发卡系统zfaka配置历程
GitHub发卡系统zfaka配置历程 1项目介绍 ZFAKA发卡系统(本系统基于yaf+layui开发) 项目地址 https://github.com/zlkbdotnet/zfaka 我 ...
- CMMI基础知识扫盲
CMMI全称是Capability Maturity Model Integration,CMMI是个好东西来的,但行内人士对她的认识并不全面,甚至有种种的误解.尽管网上有很多CMMI相关介绍,但一般 ...
- php - thinkphp3.2-phpQrcode生成二维码
import('/Doctor.Logic.phpqrcode',APP_PATH,'.php');// import('@.Doctor.Logic');$value = 'http://www.c ...
- SQL-W3School-函数:SQL MAX() 函数
ylbtech-SQL-W3School-函数:SQL MAX() 函数 1.返回顶部 1. MAX() 函数 MAX 函数返回一列中的最大值.NULL 值不包括在计算中. SQL MAX() 语法 ...
- Ionic4.x Modal模态对话框以及 Modal 传值
1.Modal 模态对话框简介 官方文档:https://ionicframework.com/docs/api/modal Modal模态对话框主要用于登录注册页面,我们可以把它理解为从页面底部弹出 ...
- IDEA同一项目启动多个实例
为了验证负载均衡,服务提供者(EurekaClientServiceProviderApplication)需要启动多个实例,当前已启动了一个实例,端口号8762: -- :: --- [ main] ...