diff --git a/websocket-sharp/CloseEventArgs.cs b/websocket-sharp/CloseEventArgs.cs index c687bd52..d7929a8b 100644 --- a/websocket-sharp/CloseEventArgs.cs +++ b/websocket-sharp/CloseEventArgs.cs @@ -87,7 +87,7 @@ namespace WebSocketSharp : (ushort) CloseStatusCode.NoStatus; _reason = len > 2 - ? Encoding.UTF8.GetString (_rawData.SubArray (2, len - 2)) + ? _rawData.SubArray (2, len - 2).UTF8Decode () : String.Empty; } diff --git a/websocket-sharp/Ext.cs b/websocket-sharp/Ext.cs index a45fda84..07b16c79 100644 --- a/websocket-sharp/Ext.cs +++ b/websocket-sharp/Ext.cs @@ -838,6 +838,16 @@ namespace WebSocketSharp : value.Substring (start + 1, len).Replace ("\\\"", "\""); } + internal static string UTF8Decode (this byte[] bytes) + { + try { + return Encoding.UTF8.GetString (bytes); + } + catch { + return null; + } + } + internal static void WriteBytes (this Stream stream, byte[] bytes) { using (var input = new MemoryStream (bytes)) diff --git a/websocket-sharp/MessageEventArgs.cs b/websocket-sharp/MessageEventArgs.cs index 0ae9d48b..947a1adf 100644 --- a/websocket-sharp/MessageEventArgs.cs +++ b/websocket-sharp/MessageEventArgs.cs @@ -88,7 +88,7 @@ namespace WebSocketSharp get { if (!_dataSet) { _data = _opcode != Opcode.Binary - ? convertToString (_rawData) + ? _rawData.UTF8Decode () : BitConverter.ToString (_rawData); _dataSet = true; @@ -123,19 +123,5 @@ namespace WebSocketSharp } #endregion - - #region Private Methods - - private static string convertToString (byte[] rawData) - { - try { - return Encoding.UTF8.GetString (rawData); - } - catch { - return null; - } - } - - #endregion } }