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倉庫 |  文件格式轉換 
          主站蜘蛛池模板: 五台县| 阳新县| 莲花县| 噶尔县| 高平市| 台南县| 曲沃县| 南川市| 会宁县| 德清县| 东阿县| 伊川县| 文昌市| 重庆市| 扶风县| 绥德县| 浏阳市| 社旗县| 祁东县| 永定县| 双辽市| 浮山县| 丹棱县| 余干县| 巴林右旗| 灵山县| 徐州市| 易门县| 丹东市| 涿鹿县| 雅安市| 高雄市| 宁都县| 兴仁县| 大同县| 武宁县| 资溪县| 宁德市| 鲁山县| 丹江口市| 芒康县|