• ベストアンサー

C++でURLのエンコード

文字列をShift-JisとUTF-8とEUCにエンコードしたいのですが、エンコードしてくれる関数とかC++でないですかね? やっぱり1バイトずつ調べて自分で変換するしかないのでしょうか? どなたかご教授お願いします。

  • wao-
  • お礼率100% (10/10)

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

  • ベストアンサー
回答No.1

IBMのライブラリ: ICU はいかがでしょうか。 100種以上の文字コードの相互変換をサポートしています。

参考URL:
http://www-306.ibm.com/software/globalization/icu/index.jsp
wao-
質問者

お礼

ご返答ありがとうございます。 参考サイト読んでみます。

wao-
質問者

補足

質問者です。 ICUを使ってShift-jisで書かれた文字列をeuc-jpに変換したりはできました。ありがとうございます。 でですね、 "abc エンコード"という(Shift-jis?)文字列を ・Shift-jisで"abc+%83G%83%93%83R%81%5B%83h"、 ・euc-jpで"abc+%A5%A8%A5%F3%A5%B3%A1%BC%A5%C9"、 ・UTF-8で"abc+%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89"、 のような感じにURL用にエンコードしたいのですが、どうしたらいいのか困ってます。 http://www.geocities.co.jp/SilkRoad/4511/vb/urlenc_c.htmみたいにするのが一般的ですかね?

その他の回答 (1)

  • nitscape
  • ベストアンサー率30% (275/909)
回答No.2

プラットフォームなどによって異なりますが、WindowsであればIMultilanguageで行うことが出来ます。

wao-
質問者

お礼

アドバイスありがとうございます。

wao-
質問者

補足

ANo.1のepistemeさんのICUとURLエンコード方法のWebページをもとに、S-JISとEUCとUTF-8にURLエンコードすることが出来ました。 IMultilanguageのアドバイスも大変助かりました。今回はICUで出来たのでICUを使います。 ありがとうございました。

関連するQ&A

  • VBでShift_JISへurlエンコードできないでしょうか?

    VB6もしくはVBAですが、 文字列をShift_JISへurlエンコードしたいと思います。 utfやeucは方法があったのですが、Shift_JISに関しては 見つかりませんでした。 よろしくお願いします。

  • 掲示板に携帯から書き込むとURLエンコード

    PHPを使って掲示板を作成しています。 UTF-8でPHPファイルを作成し、UTF-8のテキストファイルにログをためていく感じで作っています。 PCでは、だいたい正常に動くようになったのですが、携帯電話(au/W61S)からの投稿を試してみたところ、投稿結果がURLエンコードの状態になってしまいました。。。 %82%c6%82%a4%82%b1%82%a4%82%c4%82%b7%82%c6 さらにシフトJISでエンコードされているようでしたので、自分のつたない知識を総動員して、以下のような処理をさせることでなんとか形にはなったのですが、かなり処理としては乱暴な気がしています。 携帯電話からの投稿というのは、URLエンコードとして受け取るしかないのでしょうか(auでしか試していないため、他のキャリアだと別の問題が発生するのでしょうか?) また、下記の方法よりももっとスマートに携帯からの投稿を、表示できる文字列に変換する方法をご存じの方がいらっしゃいましたら、ご教授いただければ幸いです。 よろしくお願いいたします。 <?php //フォーム内に入力された文字列を取得 $test = $_GET['formtxt']; //先頭の文字を抽出 $firsttxt = substr($test,0,1); //先頭の文字列が%であれば、URLデコードを行い、シフトJISからUTF-8に変換する if($firsttxt == "%"){ $test = urldecode($test); $test = mb_convert_encoding($test,'UTF-8','SJIS'); } ?>

    • 締切済み
    • PHP
  • UTF8 URLエンコード

    こんにちわ。 PerlのCGIです。 今までEUCとsjisの変換連打で開発を乗り切って来たのですが、 さすがに古すぎて周りの人が迷惑らしいので、初めてUTF8を使うことになりました。 一応全部UTF8だけで作ろうと思います。 大まかな質問は三つです。 1:   UTF8は可変ビット (バイト単位ではない) の、   ほぼ全ての国際言語対応文字コードと言う認識で合ってますか? 2:   そうなってくると、データの送受信などのURLエンコードは不要ですか?必要ですか? 3:   もしURLエンコードが必要なら、一般に通用する変換方法を教えてください。   ついでなんでデコードの記述もお願いします。 すみませんがよろしくお願いします。

    • 締切済み
    • CGI
  • エンコード

    ローカルで自分が作成したPHPファイルにアクセスした場合、ブラウザのエンコードが自動的にシフトJISを選択します。シフトJISだと文字化けし、手動でEUCを選択すると直ります。しかしページを移動するごとに文字化けをしてしまいます。 どこを直せばよいか教えてください。

    • 締切済み
    • PHP
  • ホームページのエンコードについて。

    ホームページの文字コードについて。 Yahoo!のトップページの文字コードがUnicode(UTF-8)になって、 日本語(シフトJIS)、日本語(EUC)などすべての他の文字コードは文字化けされるので、 正常でしょうか?自動選択に設定しても文字化けしてます。 前は日本語(シフトJIS)だったのにいつ変わったんでしょうか? またトップページ以外にはすべて日本語(EUC)になってます。 もちろん、これ以外はもじばけてます。 P.S. OCNのトップページはエンコードが日本語(シフト JIS)、 so-netは日本語(シフト JIS)、 GOOは Unicode(UTF-8)、 Microsoftは Unicode(UTF-8)などですが、 皆さんはどうなってますか? 正常なら私のPCに設定されたエンコートは少なくとも日本全国で同じだと思ってますが・・・

  • シフトJISでURLエンコード

    IEのJavaScriptのescapeで日本語をURLエンコードすると、UnicodeでURLエンコードしてしまいますが、シフトJISのままURLエンコードする方法はないのでしょうか? 文字列のシフトJISコードを取得する方法でも良いのですが・・・。 まったく、Unicodeなんて役に立たないものを無理矢理標準にしようとしないで欲しいナ!>MS

  • C++で文字コードの変換

    こんにちは! C++のソース上で、UTF-8で記述された文字列をSHIFT-JISに変換する方法をご存知の方いらっしゃいましたらご教示願います。

    • ベストアンサー
    • CGI
  • HTMLでどうしても文字化け(エンコード指定がなぜか反映されない)

    HTMLでどうしても文字化け(エンコード指定がなぜか反映されない) こんにちわ、私が所属しているところは例年活動の発表ページを作成して、今年は私が作成担当になっています。 去年先輩が作ったものを参考に作っているのですがサーバに上げて見たところエンコードがおかしいのかどうしても文字化けしてしまいます。 以下に詳しい症状を箇条書きします。どなたか知恵を貸してくださる方、よろしくお願いします。 自スペック:WindowsVista:FireFox3.6.9 サーバの設定:エンコードはutf-8で統一されている(去年のページもすべてutf-8でした) 症状:去年と同様にcssでもhtmlでもutf-8を文字エンコードに指定しているが文字化け、ブラウザのエンコードをshift_jisに変えると直る ↓ 指定エンコードをshift_jisに変えてみるがなぜかutf-8で表示される ↓ ソースをterapadでutf-8に変換してみてからソースを上げなおしてみる ↓ やっぱりエンコードをshift_jisに変えないと文字化けが直らない 去年のページではutf-8で問題なく表示されており、指定コードの周辺は変えていないのでなぜ文字化けするかが不明です。 日本語のエンコードは普通shift_jisであってutf-8ではないですよね? 去年のページがなぜutf-8でも普通に表示されているのか、それがなぜほとんど同じ構成の自分が作ったページではできないのか、知恵をお貸しください。

    • ベストアンサー
    • HTML
  • javascriptでEUCのエンコード

    検索エンジン用のエンコードした文字列をjavascriptで処理しようとしています。 encodeURIComponent で処理するとUTF-8でエンコードされてしまい、思うような結果が得られません。 EUCでエンコードされた結果を得る方法は無いでしょうか? ネットで探してみたのですがjavascriptだけで解決する方法を見つけられずに困っています。 javascript内で自作の関数を作ってもいいのですが、何かヒントがあればと思います。 よろしくお願いします。

  • PHPの文字コード変換について

    PHPで mb_convert_encodingを用いて UTF-8で記述されたPHPスクリプトファイルの PHPファイル内の任意の文字列の文字コードを変換する場合、 $value = "文字列"; $str = mb_convert_encoding($value ,"UTF8","UTF8"); print $str; この場合、特に問題なく、変換がおこなわれます というか、意味のないで処理ではありますが。 次に $str = mb_convert_encoding($value,"EUC-JP","EUC-JP"); とした場合 うまく文字列の文字コードの変換がおこなわれず 出力内容は文字化けします。 次に $str = mb_convert_encoding($value,"SJIS","SJIS"); とした場合 EUC-JPと同じく文字コード変換に失敗し 文字化けするだろうとおもいましたが おもいのほかブラウザの文字コードUTF-8のままで文字化けしていないのです。 これはどういう現象でしょうか? たとえば一つ目は UTF8で記述されたPHPファイルの文字列をそのままUTF-8として 変換されせるのですから、問題ないはずです。結果問題ありません。 二つ目は UTF-8でかかれたPHPファイルの文字列をEUC-JPでかかれたファイルとして EUC-JPという文字コードに変換しなさいという命令ですよね? これは思う通りにいかなくて文字化けした文字列が出力されるのはわかるのですが 三つ目はUTF8で記述された文字列をSHIFT-JISとしてSHIFT-JISに変換しようとしているにも かかわらず、結果問題なくブラウザのUTF-8で文字列と表示されてしまいます。 これはいったいどういう事なのでしょうか? これが仮に $str = mb_convert_encoding($value,"SJIS","UTF-8"); なら話は簡単んです。 UTF-8で記述されたファイルの任意の文字列を UTF8からSJISに変換しようとしているのですから問題なく SHIFT-JISでエンコーディングされた文字列が帰ってくるはずです。 こ乃原因をご存知のかたよろしくご教授ください。 お願い致します。

    • ベストアンサー
    • PHP

専門家に質問してみよう