お久しぶりです。
では早速本題に。
yahooなどで文字を検索すると
http://search.yahoo.co.jp/search?p=%E9% ... 1_sa&x=wrt
URLはこうなりますよね。(上は龍神録と検索した時のURL)
知りたいのは%E9%BE%8D%E7%A5%9E%E9%8C%B2←この文字列のことです。
私がわかる範囲では
「ああ、searchというcgiのpという変数に検索した文字列を渡してんだな、cgiは2バイト文字を受け付けないから%00とかの文字コードに変換して渡してるんだな、%00ってasciiコードの65ばんが'A'みたいなやつか」
そんな感じだと認識しているのですが、そういう意味で合っているのでしょうか?
また漢字を渡すと上に示した文字コードを返すような関数をC#で作りたいのですが、そういうことは可能でしょうか?
ちょっと上の文は日本語がわかりづらいので実際にプログラムで表すと……
[codecs]
string str = GetMojiCode("龍神録");//strには%E9%BE%8D%E7%A5%9E%E9%8C%B2が格納される!
[/code]
こんな感じです。
よろしくお願いします
%E9%BE%8D%E7%A5%9E%E9%8C%B2←こういう文字(?)をC#で
Re: %E9%BE%8D%E7%A5%9E%E9%8C%B2←こういう文字(?)をC#で
cgiが2バイト文字を受け付けないのではなく、URLが2バイト文字を受け付けないのです。
C#でしたか・・・C++で作ってしまいました。
http://ideone.com/zPzfN
C#でしたか・・・C++で作ってしまいました。
#include <cstdio>
#include <iostream>
#include <string>
using namespace std;
string GetMojiCode(string str) {
int i;
string result="";
char buf[10];
for(i=0;i<str.length();i++) {
sprintf(buf,"%%%02X",(int)((unsigned char)str[i]));
result+=buf;
}
return result;
}
int main(void) {
string str=GetMojiCode("龍神録");
cout << str << endl;
return 0;
}
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: %E9%BE%8D%E7%A5%9E%E9%8C%B2←こういう文字(?)をC#で
C#なら関数一個です。
ただし特殊な設定をする必要があるようです。
http://www.atmarkit.co.jp/fdotnet/dotne ... ncode.html
http://d.hatena.ne.jp/shingotada+2/20100830/1283184477
ただし特殊な設定をする必要があるようです。
using System;
using System.Web;
public class Test
{
public static string GetMojiCode(string str)
{
return HttpUtility.UrlEncode(str).ToUpper();
}
public static void Main()
{
string str = GetMojiCode("龍神録");
Console.WriteLine(str);
}
}
http://d.hatena.ne.jp/shingotada+2/20100830/1283184477
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)
Re: %E9%BE%8D%E7%A5%9E%E9%8C%B2←こういう文字(?)をC#で
さすがみけCATさん、お仕事早いです
どうすればいいのか検討もつかなくて自前で対応する%00系の文字コードのテーブル作ろうかとも思ってましたw
本当に助かりました、ありがとうございました。
どうすればいいのか検討もつかなくて自前で対応する%00系の文字コードのテーブル作ろうかとも思ってましたw
本当に助かりました、ありがとうございました。
Re: %E9%BE%8D%E7%A5%9E%E9%8C%B2←こういう文字(?)をC#で
解決していますが……。
エスケープする時のエンコーディングがUTF-8であれば,Uri.EscapeDataStringなどが使えます。
エスケープする時のエンコーディングがUTF-8であれば,Uri.EscapeDataStringなどが使えます。