栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Linux 系统下C++输出中文乱码

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux 系统下C++输出中文乱码

Linux 系统下C++输出中文乱码 Linux 系统下修改文件编码格式

 

问题描述:

  在使用C++查询云服务器数据库得到UTF-8格式的含有中文的字符串后,将其输出时中文部分出现乱码。
  经测试发现,通过查询云端数据库得到的字符串输出时,每个乱码的汉字占三个字符位,而C++语句定义的字符串输出时,每个乱码的汉字占两个字符位。所以得出结论,我的Linux系统下cpp文件默认使用的是 GBK 编码格式,与查询到的数据编码格式 UTF-8 不同,才导致输出汉字乱码。
 

解决方法:

  这种情况解决方法有两种,一种是修改文件编码格式,一种是使用 g++ 编译器指令指定编码格式。
 
  方法(1):修改文件编码格式,在终端输入以下命令,其中 Src.cpp 为需要修改编码格式的源文件(已经写好的文件),Obj.cpp 为修改后的目标文件(不存在,文件名自定义),修改成功后,重新编译输出即可。

iconv -f GBK -t UTF-8 Src.cpp -o Obj.cpp

  方法(2):使用 g++ 编译器指令指定编码格式,在makefile文件下 g++ 后添加 -finput-charset=GBK -fexec-charset=UTF-8 ,添加成功后,重新编译输出即可。其中 -finput-charset 用来设置读取文件的编码方式, -fexec-charset用来设置生成的可执行文件的编码方式。

g++ -finput-charset=GBK -fexec-charset=UTF-8 -std=c++11 -g -o run Main.cpp MyDB.cpp

 

总结

  个人倾向于第二种方法,不然文件多了需要一个个修改编码格式,欢迎有更好解决方法的网友从评论区交流!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881862.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号