diff --git a/websocket-sharp/Net/HttpUtility.cs b/websocket-sharp/Net/HttpUtility.cs index 1b15d388..26cd9271 100644 --- a/websocket-sharp/Net/HttpUtility.cs +++ b/websocket-sharp/Net/HttpUtility.cs @@ -612,12 +612,19 @@ namespace WebSocketSharp.Net internal static Encoding GetEncoding (string contentType) { - foreach (var elm in contentType.Split (';')) { + var name = "charset="; + var comparison = StringComparison.OrdinalIgnoreCase; + + foreach (var elm in contentType.SplitHeaderValue (';')) { var part = elm.Trim (); - if (part.IndexOf ("charset", StringComparison.OrdinalIgnoreCase) != 0) + if (part.IndexOf (name, comparison) != 0) continue; - return Encoding.GetEncoding (part.GetValue ('=', true)); + var val = part.GetValue ('=', true); + if (val == null || val.Length == 0) + return null; + + return Encoding.GetEncoding (val); } return null;