diff --git a/GreenshotPlugin/Core/OAuthHelper.cs b/GreenshotPlugin/Core/OAuthHelper.cs
index 971c8cff8..5f781294c 100644
--- a/GreenshotPlugin/Core/OAuthHelper.cs
+++ b/GreenshotPlugin/Core/OAuthHelper.cs
@@ -221,10 +221,10 @@ namespace GreenshotPlugin.Core {
///
/// This is a different Url Encode implementation since the default .NET one outputs the percent encoding in lower case.
/// While this is not a problem with the percent encoding spec, it is used in upper case throughout OAuth
+ /// The resulting string is for UTF-8 encoding!
///
/// The value to Url encode
- /// Returns a Url encoded string
- /// This will cause an ignorable CA1055 warning in code analysis.
+ /// Returns a Url encoded string (unicode) with UTF-8 encoded % values
public static string UrlEncode3986(string value) {
StringBuilder result = new StringBuilder();
@@ -232,7 +232,10 @@ namespace GreenshotPlugin.Core {
if (UNRESERVED_CHARS.IndexOf(symbol) != -1) {
result.Append(symbol);
} else {
- result.Append('%' + String.Format(System.Globalization.CultureInfo.InvariantCulture, "{0:X2}", (int)symbol));
+ byte[] utf8Bytes = Encoding.UTF8.GetBytes(symbol.ToString());
+ foreach(byte utf8Byte in utf8Bytes) {
+ result.AppendFormat("%{0:X2}", utf8Byte);
+ }
}
}