度々お世話になっております。
Webのキーワードにときどきある
日本語を%付の文字列(UTF-8)にエンコードしたいのですが
JavaScriptには、encodeURIComponent()とかいう
便利な関数が用意されているっぽいのですが、
VCには、そのようなものはありますでしょうか?
例)「あ」 → %E3%81%82
VC6またはVC8を使っています。
よろしくお願い致します。
今回はUTF-8と言う条件なので、少し注意する必要があるような。
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200012/
00120027.txt
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200208/
02080108.txt
あたりも読んでおくといいかもしれません
いつもありがとうございます。
昨日もWebでいろいろさがしてみたつもりだったのですが、
Blueさんの教えていただいたキーワードににUTF-8を加え、
URL エンコード C言語 UTF-8のキーワードで検索したところ
(なぜか)VBのサンプルソースみつけましたので、
Cに書き直して実験してみます。
麩さんに紹介していただいたスレッドは
「古いスレッドには・・・」で見れなかったです。すみません。
Cに書き直しで上手くいきましたら報告がてら「解決」つけます!
>麩さんに紹介していただいたスレッドは
>「古いスレッドには・・・」で見れなかったです。すみません。
見れましたよ。リンクが改行で切れているので、その下に続く.txtまでをアドレスバー
にコピペしましょう。
おぉ!見れました。ありがとうございます。
とっても参考になりそうです。
ありがとうございます! できました!
過去スレ紹介していただいた SJIS → UTF-8
の変換さえ出来れば、あとは強引に文字コードを
文字列にして頭に%つけてみることにしました。
過去スレにありました、
MultiByteToWideChar()とWideCharToMultiByte()を使ったやりかたでも、
てつさんが自前で書いた CString SJIStoUTF8(LPCSTR lpszSJis)
の方法でもどちらでも上手く行きました。
上記変換関数を使わせてもらって、
SJIS文字列→UTF-8のURLエンコード文字列をした
とりあえず、それらしいプログラムが以下です。
(文字コードが1桁のものがあった場合に、0をつけて2桁表記に
するのが正しいのかどうかは、調べ不足ですが。すみません)
CString URLEncodeUTF8( LPCTSTR lpszSJis )
{
CString strRes;
CString strUtf8;
CString tmp;
int i,len;
CString SJIStoUTF8(LPCSTR lpszSJis);
strUtf8 = SJIStoUTF8(lpszSJis);
len = strUtf8.GetLength();
for ( i=0; i<len; i++ )
{
tmp.Format(%%%02x, (strUtf8[i] & 0xff) );
tmp.MakeUpper();
strRes += tmp;
}
return strRes;
}
ありがとうございました!
解決していますが指摘を。
tmp.Format(%%%02x, (strUtf8[i] & 0xff) );
tmp.MakeUpper();
↓
tmp.Format(%%%02X, (strUtf8[i] & 0xff) );
今回は日本語をということですが、以下の文字はエンコードしませんので注意が必要で
す。
アルファベット、数字(isalnum)
'-'
'_'
'.'
'*'
また、半角スペースは'+'にします。
なるほどですね。シュウさん、ありがとうございます!