Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.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#使用StreamReader.Read()转换短utf8序列或格式错误的utf8_C#_Utf 8_Streamreader_Converters - Fatal编程技术网

C#使用StreamReader.Read()转换短utf8序列或格式错误的utf8

C#使用StreamReader.Read()转换短utf8序列或格式错误的utf8,c#,utf-8,streamreader,converters,C#,Utf 8,Streamreader,Converters,在C#中,我尝试使用将某些文件格式UTF-8的内容转换为与Int32等效的内容 文件的某些行可能具有短utf8序列或格式错误的utf8。例如,当我在“Hex Editor Neo”中打开其中一个文件时,我看到的内容如下: 在本例中,我得到了-1,它是文档中的内容:“如果没有更多的字符可用”。但事实是,这并不是一个完整的utf-8序列 是否有一种方法可以区分输入的格式是否错误/短,以及是否没有更多字符可用 谢谢。您是指以NUL结尾的字符串吗?请提供更多信息。谢谢你,巴恩斯,希望现在更清楚@Cha

在C#中,我尝试使用将某些文件格式UTF-8的内容转换为与Int32等效的内容

文件的某些行可能具有短utf8序列或格式错误的utf8。例如,当我在“Hex Editor Neo”中打开其中一个文件时,我看到的内容如下:

在本例中,我得到了-1,它是文档中的内容:“如果没有更多的字符可用”。但事实是,这并不是一个完整的utf-8序列

是否有一种方法可以区分输入的格式是否错误/短,以及是否没有更多字符可用


谢谢。

您是指以NUL结尾的字符串吗?请提供更多信息。谢谢你,巴恩斯,希望现在更清楚@Charles,基本上我想知道内容是否具有有效的格式,是否符合utf-8规范。当
StreamReader.Read()
返回-1时,这意味着它无法在该位置解码字符,但它将继续解码其他字符(如果有),直到到达流的末尾。如果您得到-1且
StreamReader.EndOfStream=false
,则您知道您的内容格式不正确,或者并非所有内容都是UTF8编码的。当值大于0时,您可以将
(char)StreamReader.Read()
附加到StringBuilder(但是,您想做什么还不清楚)。如果文件内容应该包含UTF8编码的文本,那么如果在某个时候返回-1,您可能会有格式错误的内容。
StreamReader.Read
方法读取单个字符并将其作为Int32返回(我假设它代表Unicode代码点)。我不理解您的“我正在尝试将某些文件格式UTF-8的内容转换为其等效的Int32”。您显示的代码只读取一个字符,而不是“文件”。您是否尝试过将其作为字节数组读入并从中进行转换?除非您展示更多的代码并给出更好/更一致的问题陈述,否则没有人能够帮助您
 sr = new StreamReader(inputStream, Encoding.UTF8);
 return sr.Read();