Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 字节数组中的空格可以';不能删除_C#_.net Core_Service Broker - Fatal编程技术网

C# 字节数组中的空格可以';不能删除

C# 字节数组中的空格可以';不能删除,c#,.net-core,service-broker,C#,.net Core,Service Broker,我在数据库中有一个ServiceBroker队列,我正试图从中获取消息体。结果有不必要的空白,无论我怎么做都无法删除。我只想折叠所有内容并删除所有多余的空格。我试过正则表达式、修剪、替换等 队列中的原始数据: 0x31002C0020003200 信息接收者: public string RecieveMessage() { string message = string.Empty; byte[] binaryString = new byte[100]

我在数据库中有一个ServiceBroker队列,我正试图从中获取消息体。结果有不必要的空白,无论我怎么做都无法删除。我只想折叠所有内容并删除所有多余的空格。我试过正则表达式、修剪、替换等

队列中的原始数据:

0x31002C0020003200

信息接收者:

public string RecieveMessage()
    {
        string message = string.Empty;
        byte[] binaryString = new byte[100];            

        using (var conn = new SqlConnection(connectionString))
        {
            conn.Open();

            var sql = "RECEIVE TOP(1) message_body FROM [dbo].[Queue]";
            var cmd = new SqlCommand(sql, conn);

            SqlDataReader reader = cmd.ExecuteReader();
            try
            {
                while (reader.Read())
                {
                    binaryString = (byte[])reader[0];
                }

                message = System.Text.Encoding.UTF8.GetString(binaryString).Trim('\0');
            }
            catch (SqlException e)
            {
                Console.WriteLine(e);
            }
            catch (InvalidOperationException ex)
            {
                Console.WriteLine(ex);
            }
            finally
            {
                reader.Close();
                conn.Close();
            }
        }

        return message;
    }
Console.WriteLine(消息)的示例输出


2 3 5 6 5 3,J o h n D o e&A s o c i A t e s

看起来您试图将unicode/utf16读入utf8,这将以看起来像空格的字符结束,但实际上是空字符

您可以改为使用unicode编码,这将获得所需的结果

message = System.Text.Encoding.Unicode.GetString(binaryString);

看起来您正试图将unicode/utf16读入utf8,结果可能是空格,但实际上是空字符

您可以改为使用unicode编码,这将获得所需的结果

message = System.Text.Encoding.Unicode.GetString(binaryString);

编码错误?尝试使用
Encoding.Unicode.GetString
而不是
UTF8
您确定控制台的输出支持UTF8字符串吗?另外,您确定这些空格确实是空格而不是其他字符吗?我会仔细检查输出数组中的确切字节以进行验证。@JonathonChase
Unicode
成功了。接得好,我不敢相信我在发帖前没有试过。我尝试了几种版本的UTF和ASCII作为我的编码,并认为它一定是其他的东西。非常感谢。如果你想发布一个完整的答案,我会接受。错误的编码?尝试使用
Encoding.Unicode.GetString
而不是
UTF8
您确定控制台的输出支持UTF8字符串吗?另外,您确定这些空格确实是空格而不是其他字符吗?我会仔细检查输出数组中的确切字节以进行验证。@JonathonChase
Unicode
成功了。接得好,我不敢相信我在发帖前没有试过。我尝试了几种版本的UTF和ASCII作为我的编码,并认为它一定是其他的东西。非常感谢。如果你想发布一个完整的答案,我会接受。堆栈溢出时不鼓励使用纯代码答案,因为它们没有解释如何解决问题。请编辑您的答案,以解释此代码的作用以及它如何回答问题,以便对OP以及具有类似问题的其他用户有用。对于堆栈溢出,不建议使用纯代码答案,因为它们不会解释此代码如何解决问题。请编辑您的答案,以解释此代码的作用以及它如何回答问题,以便对OP以及具有类似问题的其他用户有用。