Kobarin's Development Blog

C#やASP.NETなどについての記録です。

ASP.NET(C#)でTwitter OAuth(日本語対応)

OAuthとC#でマルチバイト文字を扱う
http://d.hatena.ne.jp/nyanp/20100504/p1

要は、OAuthBase 内に以下のコードを追加して、

protected string UrlEncode(string value, Encoding encode)
{
    StringBuilder result = new StringBuilder();
    byte[] data = encode.GetBytes(value);
    int len = data.Length;

    for (int i = 0; i < len; i++)
    {
        int c = data[i];
        if (c < 0x80 && unreservedChars.IndexOf*1;
        }
    }

    return result.ToString();
}

次に、OAuthTwitter.csのoAuthWebRequest内の

qs[key] = this.UrlEncode(qs[key]);

を、以下のように書き換えれば良いだけ。

qs[key] = this.UrlEncode(qs[key], System.Text.Encoding.UTF8);

*1:char)c) != -1) { result.Append((char)c); } else { result.Append('%' + String.Format("{0:X2}", (int)data[i]