C# 从 UTF-8 流中读取字符串的正确方法

Posted 编程宝库

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 从 UTF-8 流中读取字符串的正确方法相关的知识,希望对你有一定的参考价值。

我们下面的代码是从一个流 stream 中读取 UTF-8 编码的字符串。

我们可以先考虑一下其中存在的潜在问题。

string ReadString(Stream stream)
{
var sb = new StringBuilder();
var buffer = new byte[4096];
int readCount;
while ((readCount = stream.Read(buffer)) > 0)
{
var s = Encoding.UTF8.GetString(buffer, 0, readCount);
sb.Append(s);
}

return sb.ToString();
}


问题出在:某些情况下返回的字符串与与原始编码的字符串并不同。

例如,笑脸符号有时会被解码为 4 个未知字符:


原始字符串: 

以上是关于C# 从 UTF-8 流中读取字符串的正确方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 IPC C# 时如何有效地从管道流中读取

如何在 C# 流中模拟 Java Scanner 的 next() 方法?

C#输入输出流中中文乱码问题

C# - Stream.Read 偏移工作不正确

C ++从文件流中读取无符号字符

字符输入流读取文本文件ReaderFileReaderBufferedReader