当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 在第一次使用msn后,已经勾选了不保存msn历史记录,但现在想查看以前的记录,请问硬盘中有保存吗??怎样看到自己以前的聊天纪录,谢谢. ......
    摘要: 如题: 若实框架的原因,其他的控件没有问题. 只可如何是好?是哪的原因啊? ......


中文乱码的问题

我从网上找了个代码是将网页保存为mht文件的,当参数输入为英文时程序运行正常,但是输入中文时就变成了乱码。我的中文数据是从oracle数据库中读出,由java的jni从string类型转为const   char*类型,然后显示出来就变成了乱码。小弟在c方面几乎一无所知,希望大家帮我的时候能贴出代码,谢谢!  
  源代码如下:  
  #include   "windows.h"  
  #include   <tchar.h>  
  #include   <stdio.h>  
  #include   "extended_SaveMht.h"  
   
  #import   "d:\program   files\common   files\system\ado\msado15.dll"   no_namespace   rename("EOF",   "EndOfFile")  
  #import   <cdosys.dll>   no_namespace   rename("EOF",   "EndOfFile")  
   
  JNIEXPORT   void   JNICALL   Java_extended_SaveMht_SaveWholePage  
  (JNIEnv   *   env,   jobject   obj,   jstring   pageUrl,   jstring   fileName){  
   
        CoInitialize(NULL);  
        {  
   
  const   char   *page_url;  
  const   char   *save_filename;  
   
  page_url   =   env->GetStringUTFChars(pageUrl,0);          
  save_filename   =   env->GetStringUTFChars(fileName,0);  
  printf("%s",save_filename);           //输出乱码了   T_T  
   
              IMessagePtr               iMsg(__uuidof(Message));  
              IConfigurationPtr   iConf(__uuidof(Configuration));  
              iMsg->Configuration   =   iConf;  
              try  
              {  
                    iMsg->CreateMHTMLBody(  
                          page_url,  
                          cdoSuppressNone,  
                          "domain\\username",  
                          "password");  
              }  
              catch(_com_error   err)  
              {  
                    //   handle   exception  
              }  
   
              _StreamPtr   pStream=iMsg->GetStream();  
              pStream->SaveToFile(   save_filename,  
                                                        adSaveCreateOverWrite);  
   
      env   ->   ReleaseStringUTFChars(pageUrl,   page_url);  
      env   ->   ReleaseStringUTFChars(fileName,   save_filename);  
        }  
        CoUninitialize();  
  }

NO.1   作者: vcmute

UTF需要转换,如  
                char   str   [   256   ]   =   {0xE6,0x9c,   0xAc,     0xE5   ,0}   ;     //一段UTF-8编码  
                    WCHAR*   strA;  
                    int   i=   MultiByteToWideChar   (   CP_UTF8   ,   0   ,(char*)   str   ,-1   ,NULL,0);  
                    strA   =   new   WCHAR[i];  
                    MultiByteToWideChar   (   CP_UTF8   ,   0   ,(   char   *   )   str,   -1,   strA   ,   i   );  
    strA[0]   =   0xE7;    
                    i=   WideCharToMultiByte(CP_ACP,0,strA,-1,NULL,0,NULL,NULL);  
                    char   *strB=new   char[i];  
                    WideCharToMultiByte   (CP_ACP,0,strA,-1,strB,i,NULL,NULL);  
  //strB即为所求


    摘要: 请教移位问题:为啥1 << 27 = 134217728 ? 谢谢!!! 27左移一位为啥等于134217728呢? 我算出来应当是:54 不知为啥不对呢? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE