• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
MKT-porter
博客园    首页    新随笔    联系   管理    订阅  订阅
VS2013+QT5.3 中文乱码和中文路径不识别

http://blog.csdn.net/brave_heart_lxl/article/details/7186631

ubun图中文乱码

https://blog.csdn.net/u013007900/article/details/50156115

方法一

QTextCodec * BianMa = QTextCodec::codecForName ( "GBK" );

QMessageBox::information(this, "提示", BianMa->toUnicode("中文显示!"));

  

方法二

我们也可以通过QString定义的静态函数,先转换成Unicode类型: 
QString::fromLocal8Bit("提示") 

  

对于中文常量,使用QStringLiteral即可解决,对于字符串变量,使用QString自带函数也可以轻松解决。

const char* info = "中文显示"; //不支持

QString strInfo = QStringLiteral(info);//支持

QString strInfo = QString::fromLocal8Bit(info);

  

 

 中文乱码

本方案适用于VS2013+QT5.3环境(编译器是VC)

using namespace std;
# pragma execution_character_set("utf-8")
//文件的开头要声明字符编码UTF-8,这样输出中文字符串就能显示正常。
qDebug() << " 连接交易前置...成功" ;

  

直接输出字符串是没问题了,但遇到char*[]这样的字符数组的时候显示中文还是会有问题,应该是VS环境下默认是GBK编码

在MAIN函数中添加设置本地编码GBK

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));

  在遇到字符数组的时候使用

QString::fromLocal8Bit(pRspInfo->ErrorMsg)

  

进行转换便能正常显示中文。

 

中文路径不识别

头文件:#include <QTextCodec>

 

QString fileName = QFileDialog::getOpenFileName(NULL,"filename","","");  
  
QTextCodec *code = QTextCodec::codecForName("GB2312");//解决中文路径问题  
std::string name = code->fromUnicode(fileName).data();  
  
if(fileName.isEmpty())  
{  
    return;  
}  
  
org = imread(name, 1);  

  

 

posted on 2017-09-04 12:33  MKT-porter  阅读(1311)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3