diff --git a/README.md b/README.md
index ac1a4508..c3668985 100644
--- a/README.md
+++ b/README.md
@@ -1,19 +1,11 @@
-## WebApiClient                    
-### 1 Nuget包
-
-> WebApiClient.JIT
-
-    PM> install-package WebApiClient.JIT
-* 不适用于不支持JIT技术的平台(IOS、UWP);
-* Http接口声明要求为public;
-
-
-> WebApiClient.AOT
-
-    PM> install-package WebApiClient.AOT
-* 适用于不支持JIT技术的平台(IOS、UWP);
-* Http接口声明不要求为public,可以嵌套在类里面;
+## WebApiClient      
+一款声明式的http客户端库,只需要定义c#接口并修饰相关特性,即可异步调用远程http接口。
 
+### 1 Nuget包
+| 包名 | 描述 | Nuget |
+---|---|--|
+| WebApiClient.JIT | 适用于非AOT编译的所有平台,稳定性好 | [![NuGet](https://buildstats.info/nuget/WebApiClient.JIT)](https://www.nuget.org/packages/WebApiClient.JIT) |
+| WebApiClient.AOT | 适用于所有平台,包括IOS和UWP,复杂依赖项目可能编译不通过 | [![NuGet](https://buildstats.info/nuget/WebApiClient.AOT)](https://www.nuget.org/packages/WebApiClient.AOT) | 
 
 ### 2. Http请求
 > 接口的声明
@@ -51,26 +43,15 @@ var api = HttpApi.Resolve<IUserApi>();
 var user = new UserInfo { Account = "laojiu", Password = "123456" }; 
 var user1 = await api.GetAsync("laojiu");
 var state = await api.AddAsync(user);
-``` 
-
-#### 3. Api变化
-> 相对于[v0.3.6](https://github.com/dotnetcore/WebApiClient/tree/v0.3.6)或以前版本,Api有如下变化 
-
-* ~~HttpApiClient.Create()~~ -> HttpApi.Create()
-* ~~HttpApiFactory.Add()~~ -> HttpApi.Register()
-* ~~HttpApiFactory.Create()~~ -> HttpApi.Resolve()
-* ~~Timeout~~
-* ~~UrlAttribute~~
-* ~~DebugAttribute~~
+```  
 
-#### 4. Wiki文档
+#### 3. Wiki文档
 1. [WebApiClient基础](https://github.com/dotnetcore/WebApiClient/wiki/WebApiClient%E5%9F%BA%E7%A1%80)
 2. [WebApiClient进阶](https://github.com/dotnetcore/WebApiClient/wiki/WebApiClient%E8%BF%9B%E9%98%B6)
 3. [WebApiClient高级](https://github.com/dotnetcore/WebApiClient/wiki/WebApiClient%E9%AB%98%E7%BA%A7)
 4. [WebApiClient.Extensions](https://github.com/xljiulang/WebApiClient.Extensions)
 5. [WebApiClient.Tools.Swagger](https://github.com/xljiulang/WebApiClient.Tools)
 
-#### 5. 联系方式
-1. 加Q群825135345 注明WeApiClient
-2. 邮箱366193849@qq.com,不重要的尽量不要发
+### 4 QQ群
+> 加Q群[825135345](https://shang.qq.com/wpa/qunwpa?idkey=c6df21787c9a774ca7504a954402c9f62b6595d1e63120eabebd6b2b93007410),注明WeApiClient
 
diff --git a/WebApiClient.Test/Attributes/ParameterAttributes/PathQueryAttributeTest.cs b/WebApiClient.Test/Attributes/ParameterAttributes/PathQueryAttributeTest.cs
index 7f2d63ca..2c7a7e75 100644
--- a/WebApiClient.Test/Attributes/ParameterAttributes/PathQueryAttributeTest.cs
+++ b/WebApiClient.Test/Attributes/ParameterAttributes/PathQueryAttributeTest.cs
@@ -25,7 +25,7 @@ public async Task BeforeRequestAsyncTest()
                 apiActionDescriptor: new ApiActionDescriptor(typeof(IMyApi).GetMethod("PostAsync")));
 
             context.RequestMessage.RequestUri = new Uri("http://www.webapi.com/");
-            context.RequestMessage.Method = HttpMethod.Post; 
+            context.RequestMessage.Method = HttpMethod.Post;
 
             var parameter = context.ApiActionDescriptor.Parameters[0].Clone(new
             {
@@ -37,7 +37,7 @@ public async Task BeforeRequestAsyncTest()
             await ((IApiParameterAttribute)attr).BeforeRequestAsync(context, parameter);
 
             var birthday = context.HttpApiConfig.FormatOptions.CloneChange(attr.DateTimeFormat).FormatDateTime(DateTime.Parse("2010-10-10"));
-            var target = new Uri("http://www.webapi.com?name=laojiu&birthDay=" + HttpUtility.UrlEncode(birthday, Encoding.GetEncoding(attr.Encoding)));
+            var target = new Uri("http://www.webapi.com?name=laojiu&birthDay=" + Uri.EscapeDataString(birthday));
             Assert.True(context.RequestMessage.RequestUri == target);
         }
     }
diff --git a/WebApiClient.Test/Internal/UriEditorTest.cs b/WebApiClient.Test/Internal/UriEditorTest.cs
index 37210444..78bc9e94 100644
--- a/WebApiClient.Test/Internal/UriEditorTest.cs
+++ b/WebApiClient.Test/Internal/UriEditorTest.cs
@@ -12,63 +12,61 @@ public class UriEditorTest
         [Fact]
         public void BuildTest()
         {
-            var encoding = Encoding.UTF8;
-
             var url = new Uri("http://www.webapiclient.com");
-            var editor = new UriEditor(url, encoding);
+            var editor = new UriEditor(url);
             Assert.False(editor.Replace("a", "a"));
             editor.AddQuery("a", "a");
             Assert.True(editor.Uri.ToString() == "http://www.webapiclient.com/?a=a");
 
             url = new Uri("http://www.webapiclient.com/path");
-            editor = new UriEditor(url, encoding);
+            editor = new UriEditor(url);
             editor.AddQuery("a", "a");
             Assert.True(editor.Uri.ToString() == "http://www.webapiclient.com/path?a=a");
 
             url = new Uri("http://www.webapiclient.com/path/");
-            editor = new UriEditor(url, encoding);
+            editor = new UriEditor(url);
             editor.AddQuery("a", "a");
             Assert.True(editor.Uri.ToString() == "http://www.webapiclient.com/path/?a=a");
 
 
             url = new Uri("http://www.webapiclient.com/path/?");
-            editor = new UriEditor(url, encoding);
+            editor = new UriEditor(url);
             editor.AddQuery("a", "a");
             Assert.True(editor.Uri.ToString() == "http://www.webapiclient.com/path/?a=a");
 
             url = new Uri("http://www.webapiclient.com/path?x=1");
-            editor = new UriEditor(url, encoding);
+            editor = new UriEditor(url);
             editor.AddQuery("a", "a");
             Assert.True(editor.Uri.ToString() == "http://www.webapiclient.com/path?x=1&a=a");
 
 
             url = new Uri("http://www.webapiclient.com/path?x=1&");
-            editor = new UriEditor(url, encoding);
+            editor = new UriEditor(url);
             editor.AddQuery("a", "a");
             Assert.True(editor.Uri.ToString() == "http://www.webapiclient.com/path?x=1&a=a");
 
 
             url = new Uri("http://www.webapiclient.com/path?x=1&");
-            editor = new UriEditor(url, encoding);
+            editor = new UriEditor(url);
             editor.AddQuery("a", "我");
             Assert.True(editor.Uri.ToString() == "http://www.webapiclient.com/path?x=1&a=我");
 
 
             url = new Uri("http://www.webapiclient.com/path/?x=1&");
-            editor = new UriEditor(url, encoding);
+            editor = new UriEditor(url);
             editor.AddQuery("a", "我");
             Assert.True(editor.Uri.ToString() == "http://www.webapiclient.com/path/?x=1&a=我");
 
 
             url = new Uri("http://www.webapiclient.com/path/?x={x}&");
-            editor = new UriEditor(url, encoding);
+            editor = new UriEditor(url);
           
             editor.AddQuery("a", "我");
             editor.Replace("x", "你");
             Assert.True(editor.Uri.ToString() == "http://www.webapiclient.com/path/?x=你&a=我");
 
             url = new Uri("http://www.webapiclient.com");
-            editor = new UriEditor(url, encoding);
+            editor = new UriEditor(url);
             editor.AddQuery("a", "我");
             editor.AddQuery("b", "你");
             Assert.True(editor.Uri.ToString() == "http://www.webapiclient.com/?a=我&b=你");
diff --git a/WebApiClient/Attributes/ParameterAttributes/PathQueryAttribute.cs b/WebApiClient/Attributes/ParameterAttributes/PathQueryAttribute.cs
index 7eeac08b..cd2b0761 100644
--- a/WebApiClient/Attributes/ParameterAttributes/PathQueryAttribute.cs
+++ b/WebApiClient/Attributes/ParameterAttributes/PathQueryAttribute.cs
@@ -16,12 +16,14 @@ public class PathQueryAttribute : Attribute, IApiParameterAttribute, IIgnoreWhen
         /// <summary>
         /// 编码
         /// </summary>
+        [Obsolete]
         private Encoding encoding = System.Text.Encoding.UTF8;
 
         /// <summary>
         /// 获取或设置参数的编码名称
         /// </summary>
         /// <exception cref="ArgumentException"></exception>
+        [Obsolete("Encoding将不再生效")]
         public string Encoding
         {
             get => this.encoding.WebName;
@@ -104,7 +106,7 @@ public async Task BeforeRequestAsync(ApiActionContext context, ApiParameterDescr
         /// <returns></returns>
         protected virtual Uri UsePathQuery(Uri uri, IEnumerable<KeyValuePair<string, string>> keyValues)
         {
-            var editor = new UriEditor(uri, this.encoding);
+            var editor = new UriEditor(uri);
             foreach (var keyValue in keyValues)
             {
                 if (editor.Replace(keyValue.Key, keyValue.Value) == false)
diff --git a/WebApiClient/HttpApiRequestMessage.cs b/WebApiClient/HttpApiRequestMessage.cs
index 92245c6c..7726a84d 100644
--- a/WebApiClient/HttpApiRequestMessage.cs
+++ b/WebApiClient/HttpApiRequestMessage.cs
@@ -41,7 +41,10 @@ public HttpApiRequestMessage()
         /// <exception cref="ArgumentNullException"></exception>
         public void AddUrlQuery(IEnumerable<KeyValuePair<string, string>> keyValue)
         {
-            this.AddUrlQuery(keyValue, Encoding.UTF8);
+            foreach (var kv in keyValue)
+            {
+                this.AddUrlQuery(kv);
+            }
         }
 
         /// <summary>
@@ -51,11 +54,12 @@ public void AddUrlQuery(IEnumerable<KeyValuePair<string, string>> keyValue)
         /// <param name="encoding">编码</param>
         /// <exception cref="HttpApiConfigException"></exception>
         /// <exception cref="ArgumentNullException"></exception>
+        [Obsolete("encoding参数不会再使用")]
         public void AddUrlQuery(IEnumerable<KeyValuePair<string, string>> keyValue, Encoding encoding)
         {
             foreach (var kv in keyValue)
             {
-                this.AddUrlQuery(kv, encoding);
+                this.AddUrlQuery(kv);
             }
         }
 
@@ -67,7 +71,7 @@ public void AddUrlQuery(IEnumerable<KeyValuePair<string, string>> keyValue, Enco
         /// <exception cref="ArgumentNullException"></exception>
         public void AddUrlQuery(KeyValuePair<string, string> keyValue)
         {
-            this.AddUrlQuery(keyValue, Encoding.UTF8);
+            AddUrlQuery(keyValue.Key, keyValue.Value);
         }
 
         /// <summary>
@@ -77,9 +81,10 @@ public void AddUrlQuery(KeyValuePair<string, string> keyValue)
         /// <param name="encoding">编码</param>
         /// <exception cref="HttpApiConfigException"></exception>
         /// <exception cref="ArgumentNullException"></exception>
+        [Obsolete("encoding参数不会再使用")]
         public void AddUrlQuery(KeyValuePair<string, string> keyValue, Encoding encoding)
         {
-            this.AddUrlQuery(keyValue.Key, keyValue.Value, encoding);
+            this.AddUrlQuery(keyValue.Key, keyValue.Value);
         }
 
 
@@ -91,19 +96,6 @@ public void AddUrlQuery(KeyValuePair<string, string> keyValue, Encoding encoding
         /// <exception cref="HttpApiConfigException"></exception>
         /// <exception cref="ArgumentNullException"></exception>
         public void AddUrlQuery(string key, string value)
-        {
-            this.AddUrlQuery(key, value, Encoding.UTF8);
-        }
-
-        /// <summary>
-        /// 追加Query参数到请求路径
-        /// </summary>
-        /// <param name="key">参数名</param>
-        /// <param name="value">参数值</param>
-        /// <param name="encoding">编码</param>
-        /// <exception cref="HttpApiConfigException"></exception>
-        /// <exception cref="ArgumentNullException"></exception>
-        public void AddUrlQuery(string key, string value, Encoding encoding)
         {
             if (this.RequestUri == null)
             {
@@ -115,16 +107,25 @@ public void AddUrlQuery(string key, string value, Encoding encoding)
                 throw new ArgumentNullException(nameof(key));
             }
 
-            if (encoding == null)
-            {
-                throw new ArgumentNullException(nameof(encoding));
-            }
-
-            var editor = new UriEditor(this.RequestUri, encoding);
+            var editor = new UriEditor(this.RequestUri);
             editor.AddQuery(key, value);
             this.RequestUri = editor.Uri;
         }
 
+        /// <summary>
+        /// 追加Query参数到请求路径
+        /// </summary>
+        /// <param name="key">参数名</param>
+        /// <param name="value">参数值</param>
+        /// <param name="encoding">编码</param>
+        /// <exception cref="HttpApiConfigException"></exception>
+        /// <exception cref="ArgumentNullException"></exception>
+        [Obsolete("encoding参数不会再使用")]
+        public void AddUrlQuery(string key, string value, Encoding encoding)
+        {
+            AddUrlQuery(key, value);
+        }         
+
         /// <summary>
         /// 添加字段到已有的Content
         /// 要求content-type为application/x-www-form-urlencoded
diff --git a/WebApiClient/Internal/HttpContents/UrlEncodedContent.cs b/WebApiClient/Internal/HttpContents/UrlEncodedContent.cs
index e4b092fc..3ac7c683 100644
--- a/WebApiClient/Internal/HttpContents/UrlEncodedContent.cs
+++ b/WebApiClient/Internal/HttpContents/UrlEncodedContent.cs
@@ -1,5 +1,4 @@
-using System;
-using System.Collections.Generic;
+using System.Collections.Generic;
 using System.IO;
 using System.Net;
 using System.Net.Http;
@@ -143,7 +142,8 @@ private static string Encode(string value)
             {
                 return string.Empty;
             }
-            return Uri.EscapeDataString(value).Replace("%20", "+");
+
+            return HttpUtility.UrlEncode(value, Encoding.UTF8);
         }
 
         /// <summary>
diff --git a/WebApiClient/Internal/UriEditor.cs b/WebApiClient/Internal/UriEditor.cs
index 1b0f2b29..f09a06d8 100644
--- a/WebApiClient/Internal/UriEditor.cs
+++ b/WebApiClient/Internal/UriEditor.cs
@@ -1,5 +1,4 @@
 using System;
-using System.Text;
 using System.Text.RegularExpressions;
 
 namespace WebApiClient
@@ -51,34 +50,15 @@ private set
                 this.uriCanReplace = value.OriginalString.IndexOf('{') > -1;
             }
         }
-
-        /// <summary>
-        /// 获取Uri参数的编码
-        /// </summary>
-        public Encoding Encoding { get; }
-
-        /// <summary>
-        /// Uri编辑器
-        /// </summary>
-        /// <param name="uri">绝对路径的uri</param>
-        /// <exception cref="ArgumentNullException"></exception>
-        /// <exception cref="UriFormatException"></exception>
-        public UriEditor(Uri uri)
-            : this(uri, Encoding.UTF8)
-        {
-        }
-
         /// <summary>
         /// Url创建者
         /// </summary>
-        /// <param name="uri">绝对路径的uri</param>
-        /// <param name="encoding">参数的编码</param>
+        /// <param name="uri">绝对路径的uri</param> 
         /// <exception cref="ArgumentNullException"></exception>
         /// <exception cref="UriFormatException"></exception>
-        public UriEditor(Uri uri, Encoding encoding)
+        public UriEditor(Uri uri)
         {
             this.Uri = uri ?? throw new ArgumentNullException(nameof(uri));
-            this.Encoding = encoding ?? throw new ArgumentNullException(nameof(encoding));
             if (uri.IsAbsoluteUri == false)
             {
                 throw new UriFormatException($"{nameof(uri)}必须为绝对完整URI");
@@ -104,12 +84,11 @@ public bool Replace(string name, string value)
             }
 
             var replaced = false;
-            var regex = new Regex($"{{{name}}}", RegexOptions.IgnoreCase);
-            var url = regex.Replace(this.Uri.OriginalString, m =>
+            var url = Regex.Replace(this.Uri.OriginalString, $"{{{name}}}", m =>
             {
                 replaced = true;
-                return HttpUtility.UrlEncode(value, this.Encoding);
-            });
+                return value == null ? null : Uri.EscapeDataString(value);
+            }, RegexOptions.IgnoreCase);
 
             if (replaced == true)
             {
@@ -131,8 +110,11 @@ public void AddQuery(string name, string value)
                 throw new ArgumentNullException(nameof(name));
             }
 
-            name = HttpUtility.UrlEncode(name, this.Encoding);
-            value = HttpUtility.UrlEncode(value, this.Encoding);
+            name = Uri.EscapeDataString(name);
+            if (value != null)
+            {
+                value = Uri.EscapeDataString(value);
+            }
 
             var pathQuery = this.GetPathAndQuery();
             var concat = pathQuery.IndexOf('?') > -1 ? "&" : "?";
diff --git a/WebApiClient/WebApiClient.csproj b/WebApiClient/WebApiClient.csproj
index e392c312..0c40667c 100644
Binary files a/WebApiClient/WebApiClient.csproj and b/WebApiClient/WebApiClient.csproj differ