CodeBlocks中文乱码
来源:互联网 发布:中国未来国运如何 知乎 编辑:程序博客网 时间:2024/06/18 12:09
编码设置
CodeBlocks编码
Setting->Editor…->General settings->Other settings->Encoding
gcc文件编码
Setting->Compiler->Compiler settings->Other Options:
-finput-charset=UTF-8
-fexec-charset=UTF-8
-finput-charset=GBK
-fexec-charset=GBK
控制台编码
cmd 下 输入 chcp
936 -> GBK-936
65001 -> UTF-8
控制台更改为UTF-8
windows默认936
cmd输入chcp 65001 然后右键cmd标题栏->属性->字体->选择Lucida Console和合适的字体大小 点击确定.关闭cmd
GBK中文乱码
检查CodeBlocks中编码设置和windows设置是否一致.
因为windows默认编码是GBK-936,所以将Editor->…Encoding改成GBK-936.[gcc文件编码]改成GBK.
CodeBlocks使用UTF-8编码
将Editor->…Encoding改成UTF-8.gcc文件编码(参考上面的)改成utf-8.
UTF-8中文乱码完美解决方案
写代码的时候,utf8,多字节.都是使用char []来保存数据.但是内部编码不同. code blocks使用utf-8编码, 输出的信息也是utf8,但是控制台会把字符串当做多字节编码来处理,所以会产生乱码.
将utf-8转换成多字节编码,然后再用printf/cout…等等函数 输出数据就是正常的了.
http://blog.csdn.net/czy463/article/details/47060759
//转换文字ACP编码为Utf8编码inline void ConvertACPToUtf8(char*szAcp, int nAcpLen, char *szUtf8, int nUtf8Len) { int len=MultiByteToWideChar(CP_ACP, 0, szAcp, -1, NULL,0); unsigned short * wszUtf8 = new unsigned short[len+1]; memset(wszUtf8, 0, len * 2 + 2); MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)szAcp, -1, (LPWSTR)wszUtf8, len); len = WideCharToMultiByte(CP_UTF8, 0, (LPCWSTR)wszUtf8, -1, NULL, 0, NULL, NULL); memset(szUtf8, 0, nUtf8Len); if(len <= nUtf8Len) { WideCharToMultiByte (CP_UTF8, 0, (LPCWSTR)wszUtf8, -1, szUtf8, len, NULL,NULL); } else { WideCharToMultiByte (CP_UTF8, 0, (LPCWSTR)wszUtf8, -1, szUtf8, nUtf8Len-1, NULL,NULL); } delete[] wszUtf8; }//转换文字Utf8编码为ACP编码inline void ConvertUtf8ToACP(char *szUtf8, int nUtf8Len,char *szAcp, int nAcpLen) { int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)szUtf8, -1, NULL,0); unsigned short * wszGBK = new unsigned short[len+1]; memset(wszGBK, 0, len * 2 + 2); MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)szUtf8, -1, (LPWSTR)wszGBK, len); len = WideCharToMultiByte(CP_ACP, 0, (LPWSTR)wszGBK, -1, NULL, 0, NULL, NULL); memset(szAcp, 0, nAcpLen); if(len <= nAcpLen) { WideCharToMultiByte (CP_ACP, 0, (LPWSTR)wszGBK, -1, szAcp, len, NULL,NULL); } else { WideCharToMultiByte (CP_ACP, 0, (LPWSTR)wszGBK, -1, szAcp, nAcpLen-1, NULL,NULL); } delete[] wszGBK; }
UTF-8编码.控制台乱码
CodeBlocks控制台使用的是其根目录下cb_console_runner.exe程序来启动程序. 这个程序会使用windows默认编码.如果将编码改成UTF-8,就会出现乱码. 解决方式:
1. 在程序中使用system(“chcp 65001”),这样只会改变当前输出的控制台窗口.但是测试后发现,输出几次之后,就不再输出信息了.
2. 将cb_console_runner.exe改名.更改控制台全局默认为UTF-8
(chcp 65001).
- codeblocks中文乱码解决方法
- CodeBlocks 中文乱码解决方法
- CodeBlocks中文乱码
- codeblocks中文乱码解决
- codeblocks运行显示中文乱码
- Codeblocks中文乱码-C语言中文乱码-控制台中文乱码
- linux codeblocks运行时出现中文乱码
- ubuntu13.04 下codeblocks 输出中文乱码
- CodeBlocks输出中文乱码的解决方法
- CodeBlocks使用wxsmith中文乱码思考
- codeblocks中文乱码下次防止忘了
- codeblocks 中文
- Ubuntu下CodeBlocks控制台程序中文显示乱码解决问题
- Ubuntu下CodeBlocks控制台程序中文显示乱码解决问题
- Codeblocks中文乱码原因分析和解决 编译器设置
- Codeblocks 中文乱码问题原因分析和解决方法!
- 解决Ubuntu下Codeblocks调试中文乱码问题
- Codeblocks中文乱码原因分析和解决…
- Nginx源码安装
- 汇编学习-汇编指令与C语言
- linux中简单编译C语言
- hibernate初入门2--Annotation
- HashMap源码分析(一)
- CodeBlocks中文乱码
- 生活
- 开灯问题
- u4初步使用整理(二)
- C++Mfc中读出文件夹里面的相关文件
- 腾讯MSDK for Unity
- DOM 中的Element详解
- 你真的懂iOS的autorelease吗?
- PHP+Ajax实时自动检测是否联网的实现代码