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

攀升·Uranus


Something Different,Something New
數據加載中……

多國語言惹得禍

        上面下指令說要做多國語言版的程序,這可是個不小的改動呀。于是我就拿當前的程序運行,一系列的問題隨之出現了。
        話分兩頭,先說跑在Windows上的,最基本的就是讀各種語言的文件名,正常英文還是正常的,但遇到俄文,法文,德文時就出現問題,正常的字符都變成了"?",跟蹤內存發現讀入內存的字符已經變成了3f00,也就是"?"的unicode,可見是讀入目錄到內存的函數出了問題,如下代碼:
   long filehandle;
    //the structure of file
    struct _finddata_t entry;
    //"*" means get all the file and directory
    // Get the first file
    if((filehandle = _findfirst( "*", &entry )) != -1)    //-1 means the directory is null
    {
        tree* child;
        do{
            if(entry.attrib&FILE_ATTRIBUTE_DIRECTORY){
                if ( strcmp("..", entry.name) != 0 && strcmp(".", entry.name) != 0){
                    //printf("%*s%s\\\n", depth, "", entry.name);
                    if(treenode)
                    {
                        char name[MAX_LOCALPATH_FOLDERNAME_LENGTH+1];
                        strncpy(name,entry.name,MAX_LOCALPATH_FOLDERNAME_LENGTH-1);
                        strcat(name,"\\");
                        child=new tree(name);
                        treenode->AddChild(child);
                    }
                    //Recursively processes directories
                    //printdir(entry.name, depth + 4,child);
                }
            } else{
                //printf("%*s%s\n", depth, "", entry.name);
                if(treenode)
                {
                    child=new tree(entry.name);
                    treenode->AddChild(child);
                }
            }
        }while( (_findnext(filehandle,&entry)) ==0 );
    }

    chdir("..");
    _findclose(filehandle);
        通過查證MSDN得知類似于_findfirst,findnext都是針對ASCII碼的,要讀unicode(windows默認字符集),就得用_wfindfirst,_wfindnext等讀寬字符的操作函數,最終解決問題,但我沒有松氣,因為程序主要是運行在linux中的,Linux真不知道怎么整了。
        Linux上讀多國語言的文件和目錄就需要對Linux系統深入了解,因為我要讀的文件是usb上的文件,所以得先掛載到一個目錄,
        mount -t vfat /dev/sda1 /mnt/usb,然后readdir讀入文件,與Windows上同樣的錯,讀入的是"?",我想和windows一樣去找一個類似wreaddir,但是沒有。于是應該從掛載著手,目前在NTFS和FAT32/VFAT下的文件系統上都使用了Unicode,這就需要系統在讀取這些文件名時動態將其轉換為相應的語言編碼,也就是說掛載的時候要把usb上的編碼轉化成16位的Unicode編碼,改命令如下后成功。
        mount -o iocharset = utf8 /dev/sda1 /mnt/usb.
        Linux對iocharset的解釋如下:
        Character set to use for converting between 8 bit characters and 16 bit unicode charaters.The default is iso8859-1. Long filenames are stored on disk in Unicode format.
        至此終于解決了多國語言的問題,接著我無法想象還有什么問題會出來,但我準備好了。

posted on 2007-11-09 18:53 攀升 閱讀(1727) 評論(5)  編輯 收藏 引用 所屬分類: Linux

評論

# re: 多國語言惹得禍  回復  更多評論   

不錯不錯,大問題解決了,現在出問題可能會在由于是UNICODE,字串處理函數全部換掉,字符串變長,用于保存字串的數組要仔細檢查,小心溢出
2007-11-09 20:51 | netdigger

# re: 多國語言惹得禍[未登錄]  回復  更多評論   

Did you try boost.filesystem? It providesa convenient directory iterator(as easy as like walk() in python) and supports wide characters well
2007-11-09 21:00 | tom

# re: 多國語言惹得禍  回復  更多評論   

先把代碼風格解決了吧
2007-11-10 20:13 | 123

# re: 多國語言惹得禍  回復  更多評論   

這個可是個不曉得工程吧。

# re: 多國語言惹得禍  回復  更多評論   

@netdigger
你說的很有道理
2007-11-13 11:15 | 攀升
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲激情女人| 久久精品国产v日韩v亚洲| 亚洲日本电影在线| 亚洲靠逼com| 欧美精品一区二区三| 亚洲国产91精品在线观看| 欧美aaaaaaaa牛牛影院| 欧美成人午夜77777| 亚洲高清视频的网址| 夜夜嗨网站十八久久| 久热成人在线视频| 亚洲视频1区2区| 美女图片一区二区| 小处雏高清一区二区三区 | 国模套图日韩精品一区二区| 亚洲午夜精品久久| 亚洲三级影院| 欧美在线亚洲在线| 亚洲欧美日韩区| 久久精品人人做人人综合| 久久久噜噜噜久久中文字幕色伊伊 | 欧美日韩三级电影在线| 欧美国产日韩精品免费观看| 欧美黄色一区二区| 国产精品一区二区三区成人| 激情综合色丁香一区二区| 夜夜精品视频| 鲁鲁狠狠狠7777一区二区| 99国产精品一区| 美女任你摸久久| 韩日精品中文字幕| 午夜精品剧场| 中文av字幕一区| 欧美日韩国产精品一卡| 亚洲激情电影中文字幕| 久久先锋资源| 久久成人精品视频| 国内精品视频在线播放| 翔田千里一区二区| 亚洲一区二区在线免费观看视频| 欧美成人精品一区二区| 亚洲国产va精品久久久不卡综合| 欧美亚洲日本国产| 亚洲影院色无极综合| 麻豆av一区二区三区| 在线观看亚洲专区| 女生裸体视频一区二区三区| 久久精品首页| 亚洲国产精品黑人久久久| 欧美大片免费| 国产麻豆一精品一av一免费| 欧美黄色一级视频| 亚洲第一色在线| 亚洲欧洲日本专区| 欧美日本在线一区| 一区二区久久久久久| 亚洲美女在线看| 亚洲视频免费在线| 欧美日韩久久久久久| 亚洲一区二区影院| 免费欧美高清视频| 欧美一级免费视频| 欧美黄色免费网站| 欧美在线视频二区| 欧美母乳在线| 亚洲高清在线播放| 国产一级一区二区| 在线一区二区三区四区五区| 亚洲国产岛国毛片在线| 欧美一级欧美一级在线播放| 夜夜躁日日躁狠狠久久88av| 久久婷婷丁香| 蜜臀av在线播放一区二区三区 | 久久久在线视频| 国产精品视频一| 中文在线资源观看网站视频免费不卡 | 亚洲午夜成aⅴ人片| 9国产精品视频| 欧美激情第五页| 91久久久在线| 99国产麻豆精品| 欧美日韩国产亚洲一区| 在线午夜精品自拍| 欧美在线视频在线播放完整版免费观看| 欧美区日韩区| 亚洲——在线| 国产一区美女| 欧美一二三区精品| 另类图片国产| 亚洲精品久久久久中文字幕欢迎你 | 欧美在线视频日韩| 国产日产高清欧美一区二区三区| 亚洲欧美综合精品久久成人| 久久久久国产精品www| 亚洲电影激情视频网站| 欧美裸体一区二区三区| 亚洲欧美日韩国产一区二区| 欧美xx视频| 久久黄金**| 一区二区高清| 亚洲人成人一区二区三区| 国产精品麻豆成人av电影艾秋| 久久国产免费看| 夜夜狂射影院欧美极品| 欧美aaa级| 久久综合久久综合久久综合| 夜夜嗨av一区二区三区四季av | 欧美亚洲一区三区| 欧美国产日韩二区| 久久综合九色综合欧美就去吻| 亚洲视频一二区| 中文一区二区| 亚洲一区二区三区乱码aⅴ| 亚洲经典在线看| 亚洲第一狼人社区| 在线日韩电影| 亚洲国产精品久久| 国产一区二区剧情av在线| 国产精品亚洲综合久久| 国产精品一区一区| 国产精品午夜国产小视频| 国产精品红桃| 亚洲黄一区二区| 亚洲国产精品久久久久秋霞影院 | 国产日韩欧美一区在线| 国产精品久久久久高潮| 欧美性猛交xxxx乱大交蜜桃| 国产精品va在线播放| 国产亚洲福利一区| 日韩视频一区二区三区在线播放免费观看 | 国产精品乱人伦一区二区| 国产精品美女久久久久久2018| 国产精品丝袜xxxxxxx| 在线播放不卡| 中文亚洲免费| 久色成人在线| 中文日韩电影网站| 久久中文字幕一区| 国产精品热久久久久夜色精品三区| 国产亚洲欧美aaaa| 99精品视频一区二区三区| 久久久夜夜夜| 亚洲一区在线观看免费观看电影高清| 久久国产综合精品| 国产精品久久看| 亚洲视屏一区| 亚洲精品国产欧美| 欧美aaa级| 在线观看日韩av先锋影音电影院| 国产精品99久久久久久宅男 | 在线性视频日韩欧美| 久久久精品日韩| 国产综合av| 国产精品国产三级国产aⅴ入口| 亚洲成人资源网| 久久精品道一区二区三区| 亚洲夜晚福利在线观看| 国产精品久久久久久久久动漫| av成人手机在线| 亚洲一区日韩在线| 国产精品久久福利| 午夜精品福利在线观看| 亚洲主播在线观看| 国产亚洲一级高清| 欧美成人资源| 欧美三级电影大全| 欧美在线免费播放| 久久欧美肥婆一二区| 亚洲人成啪啪网站| 亚洲午夜精品17c| 韩国成人精品a∨在线观看| 欧美成人免费va影院高清| 欧美日韩国产精品专区| 久久久久久亚洲精品杨幂换脸 | 亚洲人被黑人高潮完整版| 亚洲国产精品成人一区二区 | 国产亚洲欧美在线| 欧美高清在线一区| 国产精品日韩在线一区| 亚洲第一在线| 国内激情久久| 亚洲欧美制服另类日韩| 亚洲一本大道在线| 欧美电影打屁股sp| 免费短视频成人日韩| 国产区精品在线观看| 亚洲美女精品久久| 一本久久a久久精品亚洲| 久久久高清一区二区三区| 亚洲深夜av| 欧美精品在线观看91| 国产人成精品一区二区三| 日韩亚洲欧美在线观看| 亚洲第一精品久久忘忧草社区| 性欧美xxxx视频在线观看| 亚洲视频999| 国产精品美女久久久久av超清 | 亚洲欧美第一页| 欧美日韩在线播放三区四区| 亚洲人成精品久久久久|