Feeling

              三人行,必有我師焉

             ::  :: 新隨筆 :: 聯系 ::  :: 管理 ::
            185 隨筆 :: 0 文章 :: 392 評論 :: 0 Trackbacks

          大概因為開發環境是英文的緣故吧,做了這么久時間的SWT-Extension,直到今天才發現存取中文都是亂碼。不過顯而易見的是Test Case做得太少了,畢竟是自己的開源項目,在上面投入的是興趣,而不是精力。雖然一直在弄,但動輒就幾個月沒有commit,而且到現在也沒有一個正式版發布。本來可以積累一點user的,現在估計也都跑光了。

          下面這段代碼用于JNI中jstring和Window char之間轉換:

          char* jstringToNative( JNIEnv  *env, jstring jstr )
          {
            
          int length = env->GetStringLength(jstr );
            
          const jchar* jcstr = env->GetStringChars(jstr, 0 );
            
          char* rtn = (char*)malloc( length*2+1 );
            
          int size = 0;
            size 
          = WideCharToMultiByte( CP_ACP, 0, (LPCWSTR)jcstr, length, rtn,(length*2+1), NULL, NULL );
            
          if( size <= 0 )return NULL;
            env
          ->ReleaseStringChars(jstr, jcstr );
            rtn[size] 
          = 0;
            
          return rtn;
          }

          jstring nativeTojstring( JNIEnv
          * env, char* str )
          {
            jstring rtn 
          = 0;
            
          int slen = strlen(str);
            unsigned 
          short * buffer = 0;
            
          if( slen == 0 )
              rtn 
          = env->NewStringUTF( str ); 
            
          else
            {
              
          int length = MultiByteToWideChar( CP_ACP, 0, (LPCSTR)str, slen, NULL, 0 );
              buffer 
          = (unsigned short *)malloc( length*2 + 1 );
              
          if( MultiByteToWideChar( CP_ACP, 0, (LPCSTR)str, slen, (LPWSTR)buffer, length ) >0 )
                rtn 
          = env->NewString(  (jchar*)buffer, length );
            }
            
          if( buffer )
            free( buffer );
            
          return rtn;
          }



          JNI 用起來實在太麻煩了,比我做Java開發效率實在低得太多,各種各樣的類型轉換,我頭都暈了…… 另外JNI好像是SUN中國研究院搞的,怎么就沒有提供一個好的中文解決方案?

          Eclipse SWT Extension snapshot:













          posted on 2007-06-25 12:43 三人行,必有我師焉 閱讀(951) 評論(2)  編輯  收藏

          評論

          # re: SWT Extension做了這么久,今天才發現存取中文有問題…… 2007-06-25 12:50 BeanSoft
          所以 SWT 也就 IBM 這樣財大氣粗的人才來在哪里搞所謂的 特定平臺的 本地實現了. JDK 也是靠 SUN 這個大樹在寫各個操作系統的 C 代碼.  回復  更多評論
            

          # re: SWT Extension做了這么久,今天才發現存取中文有問題…… 2007-06-27 14:15 bigbigbig
          兄弟的SWT Extension看上去很不錯啊~提供個下載吧,學習一下  回復  更多評論
            


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          GitHub |  開源中國社區 |  maven倉庫 |  文件格式轉換 
          主站蜘蛛池模板: 鱼台县| 沈丘县| 马龙县| 北宁市| 曲周县| 玉门市| 孟州市| 舒兰市| 柳州市| 拜泉县| 漯河市| 城口县| 张掖市| 海晏县| 宜州市| 南江县| 陆河县| 尉氏县| 安义县| 手游| 县级市| 聊城市| 靖宇县| 白沙| 黎川县| 石河子市| 荔波县| 甘南县| 洱源县| 襄汾县| 远安县| 温宿县| 壶关县| 饶河县| 和平县| 普宁市| 汶川县| 普格县| 永昌县| 改则县| 文山县|