• 4406阅读
  • 6回复

Qt5中如何处理从控制台接受的中文参数? [复制链接]

上一主题 下一主题
离线facatcool
 
只看楼主 倒序阅读 楼主  发表于: 2013-10-09
我的程序中用传入main函数的参数

int main(int argc, char *argv[])
{
.....
}

参数有可能含有中文,也就是argv中会有中文。我要用参数来打开文件,如果参数中含有中文文件名Qt5就不能正确打开文件了。请问我应该如何操作呢?
离线toby520

只看该作者 1楼 发表于: 2013-10-10
应该是编码问题,查看关于编码的一些细节吧,qtcreator虽然不能加载有中文路径的项目,但是Qt应用应该是没有问题的
QtQML多多指教开发社区 http://qtclub.heilqt.com
将QtCoding进行到底
关注移动互联网,关注金融
开发跨平台客户端,服务于金融行业
专业定制界面
群号:312125701   373955953(qml控件定做)
离线XChinux

只看该作者 2楼 发表于: 2013-10-11
windows ?
一般情况下windows控制台是GBK编码吧,linux下一般用utf-8,自己进来后转下码
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线facatcool
只看该作者 3楼 发表于: 2013-10-15
引用第2楼XChinux于2013-10-11 08:48发表的  :
windows ?
一般情况下windows控制台是GBK编码吧,linux下一般用utf-8,自己进来后转下码

经过我的常识对传入的参数使用fromlocal8bit可以了。谢谢各位。
离线dbzhang800

只看该作者 4楼 发表于: 2013-10-16
这样的话,直接用 QStringList QCoreApplication::arguments() 应该就可以吧?
离线roywillow

只看该作者 5楼 发表于: 2013-10-19
一般不需要直接去处理main函数的两个参数吧
就像ls说的那样,用qcoreapplication的那个成员就行,应该是已经转码过的吧
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线facatcool
只看该作者 6楼 发表于: 2013-11-17
引用第5楼roywillow于2013-10-19 21:43发表的  :
一般不需要直接去处理main函数的两个参数吧
就像ls说的那样,用qcoreapplication的那个成员就行,应该是已经转码过的吧

居然可以这样,下次我试试。
快速回复
限100 字节
 
上一个 下一个