青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 319, comments - 22, trackbacks - 0, articles - 11
  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

關于QString對中文的支持問題

Posted on 2010-12-30 22:06 RTY 閱讀(9723) 評論(0)  編輯 收藏 引用 所屬分類: QT相關資料收集

QString對中文的支持問題

管理提醒: 本帖被 XChinux 執行加亮操作(2008-10-29)
很奇怪,我在一個工程里面是這樣用QString的:
QString Qstr = "D:\\你好嗎?\\klfjsdl.jpg";
    std::string STDstr;
    STDstr = Qstr.toAscii();
但是我在調跟蹤的時候,發現Qstr里面是亂碼!而STDstr里面卻是正確的值!
而在另一個工程里面我是這樣用QString的:
QString Qstr = QDirIterator.next();當 QDirIterator反回的是一個帶有中文的文件夾時,QStr里面的值正常,而當我用
std::string STDstr = QStr.toStdString()或是std::string STDstr = Qstr.toAscii()時,發現STDstr里面的中文字段是亂碼!我還用過Qstr.toUtf8();返回的結果也是亂碼,

主要的的問題是第如何將一個帶有中文的Qstring轉換成正確的std::string呢?



                                            謝謝!!!!
guanxu離線
級別: 新手上路
顯示用戶信息 
1 發表于: 2008-10-29  
程序中盡量不要用中文,包括所用的 文件夾,文件。。。。

不只是 Qt 就算是系統。中文的路徑名,文件名也一直是個問題。
我現在的電腦上全是英文名(以前的 linux 中文文件夾是亂碼,所以用著用著習慣了)
英文只有 26 個字母,算上大小寫,各種常用符號,也不過 一百多個。
中文字可多了去了。

畢竟編程用的語言就是英文表示的,遵守一定的規范對誰都方便。
cwbcwb505離線
級別: 新手上路
顯示用戶信息 
2 發表于: 2008-10-30  
因為操作系統是中文操作系統,程序中可以保證不用中文,可是文件目錄是不可能避免用中文,主要是我們做的程序不是自己用,而是要讓別人用,我們總不能賣東西的時候叫人家不要用中文文件夾吧
water_wf離線
級別: 騎士
顯示用戶信息 
3 發表于: 2008-10-30  
常用的處理字符相關的函數:
QString str = QString::fromUtf8("xxx");
QByteArray  = str.toUtf8();
QByteArray = str.toLatin1();
std::string str = QString().toUtf8().data();
這個自己試下就會了
mumutouv離線
級別: 俠客
顯示用戶信息 
4 發表于: 2008-10-30  
QString Qstr = QString::fromUtf8("D:\\你好嗎?\\klfjsdl.jpg");
或者
QString Qstr = QString::fromUnicode("D:\\你好嗎?\\klfjsdl.jpg");
cwbcwb505離線
級別: 新手上路
顯示用戶信息 
5 發表于: 2008-10-31  
        樓上那位兄弟回答得很好,本人又有了一些新啟發,不過有一個問題是我那個QString是從
QFileDialog::getExistingDirectory()得來的,所以我不能控制它得來的方式,像樓上所說的用toUtf8我也用過,當時調試的時候也是錯誤的!不過我仔細的揣摩了一下,發現原來QT有一個專門用于編碼之間的轉換的類——QTextCodec,然后我們的中文編碼又是——gb18030,而QT對字符串的處理與儲存都是用的Unicode,具體代碼如下:
QTextCodec *code;
QString          strImage;
std::string      strbuffer;
strImage = QFileDialog::getExistingDirectory(this, "Select image path");
code = QTextCodec::codecForName("gb18030");
strBuffer = code->fromUnicode(strImage).data();

這樣我的strBuffer里面就得到了正確的中文文件目錄,但是我還是有搞不懂的地方就是QString是用的unicode,而std::string也是支持Uncode的,那為什么他們之間不能直接傳值呢?而是要通過轉換的,搞不懂
級別: 新手上路
顯示用戶信息 
6 發表于: 2009-06-23  
我用4樓的方法搞定了哦,不過還是不懂,高手能分析下么?
songpeng離線
級別: 新手上路
顯示用戶信息 
7 發表于: 2009-09-09  
charlesjun你好!
   看見你們的帖子我很感激!
      但是我還在沒有能解決!希望分享下成功方法
     (我用的是windows下的《QT creator》編譯的)
     用QFileDialog::getOpenFileName()獲取到的文件路徑名
     如果打開包含中文字符的路徑,賦值給QString file_name(應是Unicode的)
     然后我用qt的qDebug()函數打印在《QT creator》的輸出欄看到時中文字符就是亂碼
    《QT creator》輸出欄的打印:    Starting D:/stemperature_table2_0/debug/stemperature_table2_0.exe...
                                                                   llllllsongpengssssssss11 "C:/Documents and Settings/admin/×ÀÃæ/0000B.000" 
          我想得到正確路徑然后再轉換成c++的string;目的是為了,我后面代碼用他來再次(用c++)來打開文件!
     我也試過樓上的那些方法好像沒有行!
     希望提示下 等待佳音。。。。。。。。。。。。
認真的做我自己的事情!
級別: 新手上路
顯示用戶信息 
8 發表于: 2009-12-03  
在windows下,QString轉char*,使用toLocal8Bit().data()就能獲得,當然前提你要是QString中是正確的中文,即

str="我是中國人";
qDebug()<<str;   //能輸出"我是中國人"。

如果是在linux下,就跟系統有關系了。有區別的,而且如果是qt4,linux下中文還需要翻譯器。

QString的中文變量聲明也是有區別的。

linux下TextCodec是GBK的,而windows下是GB18030的。所以你可以在main.cpp中定義

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

或是
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB18030"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB18030"));
    QTextCodec::setCodecForTr(QTextCodec::codecForName("GB18030"));

然后在使用QString中文是,采用QString::fromLocal8Bit("我是中國人").或tr("我是中國人")來進行變量聲明。這樣才能正確顯示在窗體控件上,而不是亂碼。
haulm離線
級別: 俠客
顯示用戶信息 
9 發表于: 2009-12-03  
引用
引用第1樓guanxu于2008-10-29 20:02發表的  :
程序中盡量不要用中文,包括所用的 文件夾,文件。。。。

不只是 Qt 就算是系統。中文的路徑名,文件名也一直是個問題。
我現在的電腦上全是英文名(以前的 linux 中文文件夾是亂碼,所以用著用著習慣了)
英文只有 26 個字母,算上大小寫,各種常用符號,也不過 一百多個。
.......


標準答案就是不要在程序代碼中使用中文,標準的做法是把菜單關鍵字或摘要用tr()函數包裝,然后在main()中加載翻譯文件。
為什么不用中文,試下就知道了,當在程序代碼中使用了中文,你就無法國際化了,因為導出要翻譯的文本不是中文而是一堆代表符號。

主題 : 關于QString對中文的支持問題
haulm離線
級別: 俠客
顯示用戶信息 
10 發表于: 2009-12-03  
QString::fromLocal8Bit的用途最小或說在實際編程中是沒有用的,tr()用途最廣。

wd007離線
級別: 論壇版主
顯示用戶信息 
11 發表于: 2009-12-05  
使用tr()是很穩妥的一種方式,這也是Qt 官方所極力推薦的。

當然這幾種方法都可以,我個人傾向于代碼中不使用中文符號,使用tr(),然后進行國際化。
歡迎訪問我的博客,一起學習提高
http://blog.csdn.net/qter_wd007
只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲国产人成综合网站| 国产日韩亚洲欧美综合| 亚洲精品国产精品国产自| 午夜久久资源| 久久久久久久久岛国免费| 国产色综合久久| 亚洲午夜性刺激影院| 欧美一区二区视频在线观看| 欧美精品免费观看二区| 蜜臀va亚洲va欧美va天堂| 伊人久久亚洲美女图片| 欧美猛交免费看| 一区二区国产日产| 久久久久国产精品一区三寸 | 欧美一区三区二区在线观看| 一区二区三区成人精品| 国产午夜精品久久| 欧美激情在线播放| 亚洲性人人天天夜夜摸| 久久香蕉国产线看观看网| 亚洲一区二区欧美日韩| 国产在线欧美日韩| 欧美激情综合五月色丁香小说| 亚洲图片欧洲图片av| 性做久久久久久免费观看欧美| 亚洲国产裸拍裸体视频在线观看乱了 | 日韩午夜电影| 韩国一区电影| 国产精品va在线播放我和闺蜜| 欧美一区二区在线免费播放| 亚洲午夜精品久久| 日韩午夜一区| 亚洲区一区二| 久久九九精品99国产精品| 亚洲国产婷婷综合在线精品| 久久大香伊蕉在人线观看热2| 亚洲午夜高清视频| 激情综合亚洲| 国产欧美一区二区三区另类精品| 欧美日韩网站| 欧美精品aa| 欧美日韩精品国产| 欧美日韩精品一区二区三区| 欧美大尺度在线| 久久在精品线影院精品国产| 开心色5月久久精品| 久久福利影视| 美女诱惑一区| 欧美成人综合网站| 老鸭窝亚洲一区二区三区| 老鸭窝毛片一区二区三区| 久久蜜桃精品| 欧美一级一区| 久久国产视频网站| 午夜欧美电影在线观看| 久久久午夜精品| 欧美成人一品| 国产精品视频久久| 亚洲大胆av| 欧美一级久久| 免费91麻豆精品国产自产在线观看| 欧美一区1区三区3区公司| 欧美一区二区三区男人的天堂| 久久国产精品久久w女人spa| 亚洲国产三级网| 亚洲一二三区精品| 免费不卡中文字幕视频| 欧美成人午夜激情视频| 国产日韩欧美综合精品| 亚洲区一区二区三区| 国产精品入口66mio| 中国女人久久久| 亚洲特色特黄| 欧美日韩伊人| 日韩视频一区二区在线观看| 欧美激情亚洲视频| 亚洲日韩欧美视频一区| 午夜亚洲性色视频| 国产精品自拍在线| 米奇777在线欧美播放| 亚洲乱码国产乱码精品精可以看| 一区二区三区中文在线观看| 久久婷婷蜜乳一本欲蜜臀| 亚洲激情社区| 欧美一区免费视频| 最新国产成人在线观看| 亚洲国产精品成人综合色在线婷婷 | 亚洲欧美日韩爽爽影院| 亚洲电影免费在线| 久久精品99| 亚洲黄色在线视频| 国产亚洲精品美女| 国产精品无码永久免费888| 亚洲自拍偷拍色片视频| 99re热这里只有精品视频 | 午夜欧美大片免费观看| 亚洲黄网站在线观看| 欧美黄色日本| 欧美成人免费网| 亚洲狠狠婷婷| 免费欧美在线| 亚洲欧美另类在线| 日韩亚洲精品在线| 日韩写真视频在线观看| 久久av一区二区三区亚洲| 亚洲精品美女在线| 免费久久精品视频| 国产夜色精品一区二区av| 久久欧美中文字幕| 久久亚洲精品一区二区| 久久久亚洲影院你懂的| 午夜国产精品视频| 99国内精品久久| 亚洲日本视频| 欧美一区二区精美| 久久躁日日躁aaaaxxxx| 国产亚洲精品aa午夜观看| 欧美电影免费观看高清完整版| 欧美va天堂在线| 国产日韩av高清| 亚洲国产日韩欧美综合久久 | 亚洲欧美一区二区三区久久 | 国产精品区二区三区日本| 国产精品一二三视频| 一本在线高清不卡dvd| 欧美一区二区三区在线| 欧美成人黄色小视频| 欧美国产日韩免费| 亚洲国产精品电影| 久久久久88色偷偷免费| 欧美诱惑福利视频| 欧美视频在线一区二区三区| 亚洲日本在线视频观看| 久久久久亚洲综合| 亚洲美女色禁图| 国产精品每日更新| 欧美大片免费看| 一区二区成人精品 | 欧美一进一出视频| 免费精品视频| 亚洲综合视频在线| 亚洲高清网站| 久久久蜜桃一区二区人| 久久亚洲精品视频| 亚洲欧美成人| 国产午夜精品视频| 久久永久免费| 欧美成人精品h版在线观看| 欧美四级电影网站| 亚洲国产片色| 亚洲欧美激情视频| 欧美一区二区三区在线观看视频| 亚洲在线播放电影| 国产伦精品一区二区三区四区免费 | 亚洲丰满少妇videoshd| 欧美三级日韩三级国产三级| 国产精品久久久久一区二区三区 | 欧美理论电影在线观看| 亚洲视频你懂的| 欧美福利影院| 久久久国产精品一区二区中文| 欧美日韩一区二区三区四区五区| 亚洲新中文字幕| 国产精品久久久久永久免费观看| 国产精品99久久久久久人| 香蕉免费一区二区三区在线观看 | 蜜臀99久久精品久久久久久软件| 亚洲国产精品ⅴa在线观看| 欧美日韩国产一中文字不卡| 亚洲欧美国产精品桃花| 久久婷婷国产综合尤物精品| 亚洲日本中文字幕免费在线不卡| 国产精品久久久久久久久动漫| 久久久97精品| 亚洲精品社区| 久久午夜精品一区二区| 一本久久精品一区二区| 国产亚洲精品bt天堂精选| 欧美极品在线播放| 欧美在线精品免播放器视频| 亚洲精品一区二区三区在线观看| 小黄鸭视频精品导航| 亚洲国产另类久久久精品极度| 国产精品视频免费| 欧美h视频在线| 欧美一级电影久久| 夜夜嗨av一区二区三区免费区| 快射av在线播放一区| 亚洲午夜精品久久久久久app| 亚洲国产cao| 国产亚洲福利一区| 国产精品国产成人国产三级| 免费在线亚洲欧美| 国产精品亚洲аv天堂网| 久久大综合网| 亚洲女人av| 亚洲欧洲精品一区二区三区| 欧美一区久久| 亚洲视频一区| 夜夜嗨av一区二区三区|