Server.UrlEncode()指定GBK符号化
3043 ワード
質問:Server.UrlEncode(「こんにちは」)は符号化フォーマットを指定できません
解決方法:方法一、サーバーを呼び出す.UrlEncode()の前にResponseに加入する.ContentEncoding = System.Text.Encoding.GetEncoding(「GBK」)メソッド2、web.configでの構成:
理由:
サーバーを表示します.UrlEncode()ソースコード(HttpServerUtilityクラス):
そして_context.Response.ContentEncodingのソースコードは
一目瞭然
解決方法:方法一、サーバーを呼び出す.UrlEncode()の前にResponseに加入する.ContentEncoding = System.Text.Encoding.GetEncoding(「GBK」)メソッド2、web.configでの構成:
<configuration>
<system.web>
<globalization requestEncoding="GBK" responseEncoding="GBK" />
system.web>
configuration>
理由:
サーバーを表示します.UrlEncode()ソースコード(HttpServerUtilityクラス):
public string UrlEncode(string s) {
Encoding e = (_context != null) ? _context.Response.ContentEncoding : Encoding.UTF8;
return HttpUtility.UrlEncode(s, e);
}
そして_context.Response.ContentEncodingのソースコードは
public Encoding ContentEncoding {
get {
if (_encoding == null) {
// use LKG config because Response.ContentEncoding is need to display [config] error
GlobalizationSection globConfig = RuntimeConfig.GetLKGConfig(_context).Globalization;
if (globConfig != null)
_encoding = globConfig.ResponseEncoding;
if (_encoding == null)
_encoding = Encoding.Default;
}
return _encoding;
}
set {
if (value == null)
throw new ArgumentNullException("value");
if (_encoding == null || !_encoding.Equals(value)) {
_encoding = value;
_encoder = null; // flush cached encoder
if (_httpWriter != null)
_httpWriter.UpdateResponseEncoding();
}
}
}
一目瞭然