Feeling

              三人行,必有我?guī)熝?/p>

             ::  :: 新隨筆 :: 聯(lián)系 ::  :: 管理 ::
            185 隨筆 :: 0 文章 :: 392 評論 :: 0 Trackbacks

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

          下面這段代碼用于JNI中jstring和Window char之間轉(zhuǎn)換:

          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開發(fā)效率實在低得太多,各種各樣的類型轉(zhuǎn)換,我頭都暈了…… 另外JNI好像是SUN中國研究院搞的,怎么就沒有提供一個好的中文解決方案?

          Eclipse SWT Extension snapshot:














          評論

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

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


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


          網(wǎng)站導(dǎo)航:
           
          GitHub |  開源中國社區(qū) |  maven倉庫 |  文件格式轉(zhuǎn)換 
          主站蜘蛛池模板: 广南县| 巍山| 当雄县| 海门市| 台南县| 瓮安县| 台东市| 井冈山市| 德清县| 夏河县| 新昌县| 张家界市| 娄底市| 湖北省| 长泰县| 霍山县| 鲜城| 大姚县| 平舆县| 卢湾区| 军事| 霞浦县| 青铜峡市| 绵竹市| 右玉县| 武汉市| 景东| 阜南县| 广安市| 金平| 南召县| 军事| 六枝特区| 巴里| 新泰市| 慈利县| 金阳县| 大化| 泾源县| 旬阳县| 炉霍县|