• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:InternetOpenUrlの引数URL文字コードについて)

URL文字コードについての疑問

このQ&Aのポイント
  • URL文字コードについて詳しく教えてください
  • char型のURLでInternetOpenUrlが実行されない場合、どうすればいいですか?
  • Unicode指定が必要な場合の対処法を教えてください

質問者が選んだベストアンサー

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.3

>そうです。変換方法がわかりません。 MultiByteToWideCharというAPIで変換できます。 http://www.doumo.jp/postgretips/tips.jsp?tips=67

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.4

確か作ろうとされているのはWindows CE 用のプログラムですよね? MultiByteToWideCharでも変換できますが、 mbstowcsという関数を使うこともできるかもしれません。

参考URL:
http://www.microsoft.com/japan/windowsmobile/pocketpc/techpapers/techguide/guide_8.asp
全文を見る
すると、全ての回答が全文表示されます。
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wininet/wininet/internetopenurl.asp によると、 LPCWSTR ではなくて LPCTSTR になってますけど?

全文を見る
すると、全ての回答が全文表示されます。
  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

Unicode(ワイド文字列)に変換すればよいと思いますが、その変換の方法が わからないということでしょうか?

the-ai
質問者

補足

そうです。変換方法がわかりません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • WinInetのInternetOpenUrl関数が正常に動作しない。

    ネットワーク上のHTMLソースを取得しようとしています。InternetOpenUrl関数が動作せず、常にNULLが返ってきます。 環境は、WindowsXP、WindowsCE Platform Builder です。 void Get_HTML(){ HINTERNET hInternet; HINTERNET hFile; char Buff[1000]; DWORD ReadSize; BOOL bResult; //WinInetの初期化 char *agent ="WININET Sample Program"; hInternet = InternetOpen( (LPCWSTR)agent, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0 ); if( hInternet == NULL ){ printf("InternetOpen Error \n"); } //ネット接続チェック if( InternetAttemptConnect(0) != ERROR_SUCCESS { printf("インターネットに接続できません。\n"); } else{ printf("インターネットに接続できる\n"); } //URLオープン char open_url="http://www.sample.com/sam1.html"; hFile = InternetOpenUrl( hInternet, (LPCWSTR)open_url, NULL, 0, INTERNET_FLAG_RELOAD, 0 ); printf("%s",(LPCWSTR)open_url); if( hFile == NULL ){ printf(" InternetOpenUrl ERROR \n"); } } InternetOpenUrl関数の戻り値がNULLになりReadを することが出来ません。 解決方法よろしくお願い致します。

  • _TCHAR、LPCWSTRについて

    'MessageBoxW' : 2 番目の引数を '_TCHAR' から 'LPCWSTR' に変換できません。 というエラーが出ました。 いろいろHPを回って_TCHARはUnicodeの場合はw_char、マルチバイトのときはcharで処理されると書いてあったのですが、どうしても直せません。 現在Unicodeとマルチバイトの両方に対応させたプログラムを書きたいと思っています。 どうすればいいでしょうか。 よろしくお願いします。

  • VC++ HttpOpenRequest() 正しく終了しない。

    MFC-dllを作成してVBで使用しようと思っています。 DLLの中ではWebサーバーに接続してデータを取得して VBで使う感じです。 DLLの中でダイアログボックスを一個作ってその中で実際のサーバーとの通信を行います。次のコードはそのDLL中のダイアログボックスの中でボタンを押したとき実行される関数です。 動きとしてはサーバーに接続し、データを正しく取得できますが、問題はこのDLLを使っているVBプログラムが終了してもWindows タスクマネージャーを見ると終了されてない状態です(デスクトップ画面上では終了されています)。しばらくしたら『応答なし』になって結局2~3分たったら自動に消滅されるのですが何だか感じ悪いです。コードの中に何か問題があるかどうか教えてください。 Void CTest::GetA (){ CHAR buffer[2048]; DWORD dwRead; char Header[]="Content-Type: application/x-www-form-urlencoded\n"; char Data[]="name=JohnDoe"; HINTERNET hINet=InternetOpen("V1.0",INTERNET_OPEN_TYPE_PRECONFIG,NULL,NULL,0); HINTERNET hCon=InternetConnect(hINet,"localhost",8080,"","", INTERNET_SERVICE_HTTP,0,0); HINTERNET hData = HttpOpenRequest(hConnection,"POST","/test001.asp",NULL,NULL,NULL,INTERNET_FLAG_KEEP_CONNECTION,0); HttpSendRequest( hData, Header, strlen(Header),Data,strlen(Data)); while( InternetReadFile( hData, buffer, 255, &dwRead ) ) { if ( dwRead == 0 ) break; buffer[dwRead] = 0; m_strContents += buffer; } InternetCloseHandle(hCon); InternetCloseHandle(hINet); InternetCloseHandle(hData); }

  • 「C#」文字コードの取得&文字変換

    C#で文字コードを調べるプログラムを作成しています。 そこで2つ質問をさせてください。 1つ目(文字コード調べ) TextBoxに漢字を入力して,各エンコーディングの文字コードを調べるときに,UNICDEの場合, Encoding enc_default = Encoding.GetEncoding(932); string input = tb_input.Text; byte[] byte_input = enc_default.GetBytes(input); string outtext_unicode = ""; Encoding enc_unicode = Encoding.Unicode; byte[] byte_unicode = Encoding.Convert(enc_default,enc_unicode, byte_input); foreach (byte b in byte_unicode) { outtext_unicode += string.Format("{0:X}", (int)b); } tb_output_unicode.Text = outtext_unicode; とすると,調べたい文字コードがLE(リトルエディアン)で出力されます。これをBE(ビッグエディアン)で出力されるにはどうしたらよいでしょうか? ご存知の方がいらっしゃいましたら,ぜひ教えてください。 よろしくお願いいたします。 2つ目(文字コードから文字を取得する) 上記の質問と逆のパターンで,TextBoxに文字コードを入力してもらい,人間が読める文字に変換する場合下記のようなコードを書くと, string codePoint_string = tb_output_unicode.Text; int codePoint = int.Parse(codePoint_string); char c = (char)codePoint; tb_input.Text = Convert.ToString(c); ASCIIの文字コードを入力した場合には,きちんと変換してくれるのですが,漢字の文字コードを入力すると,FormatExceptionが発生します。 何か勘違いをしているのかもしれませんが,いまいちやり方が創造できません。 こちらも,ご存知の方がいらっしゃいましたら,ご教示願います。

  • 引数の受け渡しに関して

    教えて下さい。 入力画面(AAA_NEW.php)より入力された情報が正しいかどうかをチェックするPREVIEW画面という画面を設け、 エラーがあった場合は、また入力画面に戻るような事をしたいと考えています。 そこで、以下のような記述をしましたが、エラーの際に戻る場合に入力情報が消えてしまっている為、引数として 渡すような事を考えていますが、どのような方法があるでしょうか? PHPで input type='hidden' なんかが使えれば、私もわかるのですが、、、 初歩的な質問で申し訳ありませんが、教えて下さい。 よろしくお願いします。 《PREVIEW画面》 ↓ここで入力画面からの引数を取得 if($_POST['p_syamei'] != NULL) { $tmp_p_symei = $_POST["p_syamei"]; }else{ $ERR_FLAG1 = 1; } if($_POST["p_syamei_furigana"] != NULL) { $tmp_p_syamei_furigana = $_POST["p_syamei_furigana"]; }else{ $ERR_FLAG2 = 1; } <script> function btn_ins2() { window.open("about:blank","window_name","width=640,height=480,scrollbars=yes,menubar=yes,toolbar=yes,status=yes"); document.f_od.target = "window_name"; document.f_od.method = "POST"; document.f_od.action = "AAA_NEW.php"; document.f_od.submit(); } </script> ********************************************************** <?php if ($ERR_FLAG1 == 1){ print("社名を入力して下さい。"); print("<TD><DIV Align='right'><input type='button' name='btn_order' onclick=btn_ins2() value=' 戻る '></DIV></TD>\n"); die; }else if($ERR_FLAG2 == 1){ print("社名フリガナを入力して下さい。"); print("<TD><DIV Align='right'><input type='button' name='btn_order' onclick=btn_ins2() value=' 戻る '></DIV></TD>\n"); die; } ?>

    • ベストアンサー
    • PHP
  • 演算子「 | 」について

    VC++のネットワークプログラミングの勉強をしています。 HTTPクライアントのソースコードをみていると、 こんなの DWORD dwHttpRequestFlags = INTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECT; とか psf = is.OpenURL( szFile, 1, INTERNET_FLAG_TRANSFER_BINARY | INTERNET_FLAG_RELOAD); と書かれているのをよく見るのですが、この場合の「 | 」演算子はどういう意味なのでしょうか? 普通に論理和のことなのでしょうか? その場合はINTERNET_FLAG_EXISTING_CONNECT | INTERNET_FLAG_NO_AUTO_REDIRECTとかはどういう意味を持つ値になるのでしょうか? また、このような書き方をするとどのようなメリットがあるのでしょうか? ご教授よろしくお願いします。

  • jpgファイルのダウンロード

    WWWサーバー上にあるjpgファイルを指定してそれをダウンロードするプログラムをつくっています。 jpgファイルが作成されることはされるのですが、中身をみることができない状態になってしまいます。 どこが悪いのかわかる方がおられましたらご教授お願いします。 <ソースコード> #include <windows.h> #include <stdio.h> #include <wininet.h> int main(void) { HINTERNET hInet, hUrl; char szBuf[128], szUrl[128], *lpszSrc; DWORD dwRead, dwTotal = 0; HGLOBAL hMem; FILE *file; printf("URL---- "); gets(szUrl); hInet = InternetOpen(TEXT("neko"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if(hInet == NULL){ perror("オープンエラー\n"); return -2; } hUrl = InternetOpenUrl(hInet, szUrl, NULL, 0, 0, 0); if(hUrl == NULL){ perror("URLオープンエラー\n"); return -3; } hMem = GlobalAlloc(GHND, 1); lpszSrc = (char*)GlobalLock(hMem); while(1){ InternetReadFile(hUrl, szBuf, (DWORD)sizeof(szBuf)-1, &dwRead); szBuf[dwRead] = '\0'; if(dwRead == 0){ break; } dwTotal += dwRead; hMem = GlobalReAlloc(hMem, dwTotal+1, GMEM_MOVEABLE); lpszSrc = (char*)GlobalLock(hMem); strcat(lpszSrc, szBuf); } if((file = fopen("test.jpg", "wb")) == NULL){ printf("ファイルオープンエラー\n"); goto end; } while(dwTotal){ fputc(*lpszSrc, file); lpszSrc++; dwTotal--; } fclose(file); end: GlobalUnlock(hMem); GlobalFree(hMem); InternetCloseHandle(hUrl); InternetCloseHandle(hInet); return 0; } <環境> Windows Vista VC++ 2005 EE

  • InternetOpenUrlについて

    InternetOpenUrlを同一プログラム内で繰り返し使おうと思っているのですがうまくいきません ちなみにソースは hInet = InternetOpen("nekodemo-wakaru", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (hInet == NULL) { perror("オープンエラー\n"); return -2; } //HTTPセッションの開始, 指定のURLオープン hUrl = InternetOpenUrl(hInet, szUrl, NULL, 0, 0, 0); if (hUrl == NULL) { perror("URLオープンエラー\n"); InternetCloseHandle(hInet); return -3; } GetHtml(hInet,hUrl); pNext=GetMeigara(); printf("%s\n",pNext); remove("html.txt"); //インターネットハンドルの解放 InternetCloseHandle(hUrl); InternetCloseHandle(hInet); while(pNext != NULL){ hInet = InternetOpen("nekodemo-wakaru", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (hInet == NULL) { perror("オープンエラー\n"); return -2; } hUrl = InternetOpenUrl(hInet, pNext, NULL, 0, 0, 0); if (hUrl == NULL) { perror("URLオープンエラー\n"); InternetCloseHandle(hInet); return -3; } GetHtml(hInet,hUrl); pNext=GetMeigara(); remove("html.txt"); InternetCloseHandle(hUrl); InternetCloseHandle(hInet); if(pNext==NULL) break; } 見づらくて申し訳ありません ちなみにループの中のInternetOpenUrlでオープンエラーになります

  • コマンドラインから引数を渡すことについて

    ----------------------------------------------- #include<stdio.h> #include<stdlib.h> int main(int argc,char *argv[ ]) { FILE *fin,*fout; char ss[256]; if(argc != 3){ printf("引数の数が違います\n"); exit(1); } if((fin=fopen(argv[1],"r"))==NULL){ printf("入力ファイルをオープンできません\n"); exit(1); } if((fout=fopen(argv[2],"w"))==NULL){ printf("出力ファイルをオープンできません\n"); exit(1); } while(fgets(ss,256,fin)!=NULL){ fputs(ss,fout); } fclose(fin); fclose(fout); return 0; } ----------------------------------------------- 以上のプログラム名は「tcopy.cpp」でコマンドプロンプトから実行し、ファイルをコピーするという事を行っていきます。 「aaa.txt」と「bbb.txt」の2つを用意し、「aaa.txt」の内容、 abcdef ABCDEF 012345 を「bbb.txt」にコピーしていきます。 そこで疑問なのですが、ファイルをコピーする際、コマンドプロンプトから、 >tcopy aaa.txt bbb.txt と打ち込むとコピー出来るようであり、「tcopy」、「aaa.txt」、「bbb.txt」が引数になるという事なのですが、何故この3つが引数になるのかという事と、 int main(int argc,char *argv[ ]) のargcに引数が何故代入されるかが分かりません。 後、「aaa.txt」と「bbb.txt」がargv[1]とargv[2]に何故対応しているかが分かりません。 教えていただければ嬉しいです。

  • wininetでPOSTで値を渡せません

    winnetを使ってPOST形式でサーバにパラメータを渡そうとしていますが、パラメータが渡せずに困っています。 HttpOpenRequestかHttpSendRequestがおかしいと思うのですが、自分では見当がつきません。 よければ何処に問題があるのか教えてください。 環境:vc++2005 int DoHttpRequest( void ) { HINTERNET hInet, hSession, hRequest; DWORD dwTotal = 0; wchar_t param[] = L"type=1"; wchar_t header[] = L"Content-Type: application/x-www-form-urlencoded"; wchar_t accept[] = L"Accept: */*"; // 使ってない BOOL flag; Console::WriteLine( "Http接続START" ); //インターネット(WinInet)初期化 hInet = InternetOpen( NULL, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); if (hInet == NULL) { Console::WriteLine( "エラー1" ); return -1; } // サーバへ接続 hSession = InternetConnect( hInet, L"192.168.11.25", 9999, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0 ); if( hSession == NULL ) { Console::WriteLine( "エラー2" ); InternetCloseHandle(hInet); return -1; } //HTTPセッションの開始, 指定のURLオープン hRequest = HttpOpenRequest( hSession, L"POST", L"/sample/service.php", NULL, NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE, 0 ); if (hRequest == NULL) { Console::WriteLine( "エラー3" ); InternetCloseHandle(hSession); InternetCloseHandle(hInet); return -1; } // 送信 flag = HttpSendRequest( hRequest, header, wcslen( header ), param, wcslen( param )); if( flag == FALSE ) { Console::WriteLine( "エラー4" ); InternetCloseHandle(hRequest); InternetCloseHandle(hSession); InternetCloseHandle(hInet); return -1; } //インターネットハンドルの解放 InternetCloseHandle( hRequest ); InternetCloseHandle( hSession ); InternetCloseHandle( hInet ); Console::WriteLine( "Http接続END" ); return 0; }