C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: C++/CLI での文字コード変換


(過去ログ 74 を表示中)

[トピック内 8 記事 (1 - 8 表示)]  << 0 >>

■43325 / inTopicNo.1)  C++/CLI での文字コード変換
  
□投稿者/ なっと (1回)-(2009/11/05(Thu) 15:31:46)

分類:[C++/CLI] 

初めまして、なっとと申します。

C++ CLI を始めて間もないのですが、文字コードの変換がうまくいかなくて悩んでいます。

Webページから html を取得 (encoding:euc-jp) し、そのまま textBox などに表示すると
文字が化けてしまうので、表示できる正しい文字コードに変換したいのですが、どのようにすればいいでしょうか?

Perl だと Convert 一発なのですが、C++CLIでは半日悩んでわかりませんでした…

よろしくおねがいいたします。


引用返信 編集キー/
■43327 / inTopicNo.2)  Re[1]: C++/CLI での文字コード変換
□投稿者/ Hongliang (501回)-(2009/11/05(Thu) 15:38:54)
どのように取得しているか分からないことには適切な助言は難しいですが。
取り敢えず、一旦 String^ になってしまったら手遅れです。
System::Text::Encoding の GetEncoding 静的メソッドで Encoding^ を取得し、外部から読み込んできた array<Byte>^ 形式のデータに対して Encoding^ の GetString メソッドを呼び出します。
引用返信 編集キー/
■43328 / inTopicNo.3)  Re[1]: C++/CLI での文字コード変換
□投稿者/ επιστημη (2253回)-(2009/11/05(Thu) 15:49:19)
επιστημη さんの Web サイト
↓ボタンを押すと"手法"って書きます。

    private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
      System::Text::Encoding^ euc = System::Text::Encoding::GetEncoding(L"EUC-JP");
      array<unsigned char>^ input = gcnew array<unsigned char>(4);
      input[0] = 0xBC; input[1] = 0xEA; // 手
      input[2] = 0xCB; input[3] = 0xA1; // 法
      textBox1->Text = euc->GetString(input);
    }

引用返信 編集キー/
■43329 / inTopicNo.4)  Re[2]: C++/CLI での文字コード変換
□投稿者/ なっと (2回)-(2009/11/05(Thu) 16:43:09)
String^ になってしまうと手遅れ…了解しました。

取得は、WebClient::DownloadString でやってます。
この時点で終了というわけですね。

別の方法を考えてみたいと思います。

引用返信 編集キー/
■43330 / inTopicNo.5)  Re[3]: C++/CLI での文字コード変換
□投稿者/ なっと (3回)-(2009/11/05(Thu) 16:53:22)
できました!

	array<Byte>^ byPage = wc->DownloadData(textBox1->Text);
	Encoding^ euc = Encoding::GetEncoding(L"EUC-JP");
	textBox2->Text = euc->GetString(byPage);

これだけでできました…。ぅぅ

Hongliangさん、επιστημηさん、ありがとうございました!


引用返信 編集キー/
■43331 / inTopicNo.6)  Re[4]: C++/CLI での文字コード変換
□投稿者/ なっと (4回)-(2009/11/05(Thu) 16:53:48)
解決チェックし忘れました…
解決済み
引用返信 編集キー/
■43332 / inTopicNo.7)  Re[4]: C++/CLI での文字コード変換
□投稿者/ επιστημη (2254回)-(2009/11/05(Thu) 17:03:39)
επιστημη さんの Web サイト
> これだけでできました…。ぅぅ

めでたし。

EUC-JP決め打ちならこれでえぇけど、
ホントならHTTP-headerなりなんなりから情報もらって
Encodingをこしらえるんでしょねー

解決済み
引用返信 編集キー/
■43333 / inTopicNo.8)  Re[5]: C++/CLI での文字コード変換
□投稿者/ Hongliang (502回)-(2009/11/05(Thu) 17:20:12)
2009/11/05(Thu) 17:21:05 編集(投稿者)

WebClient 使ってるなら、WebClient::Encoding を設定してしまえば DownloadString でも。
// まあ、HTML で meta 要素まで参照する必要があるレベルになるとさすがに無理ですが。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -