C#中StreamReader读取CSV字符串时双引号的处理机制问询
CSV读取时引号转义问题
代码实现
using (Stream dataStream = resp.GetResponseStream()) { using (StreamReader rdr = new StreamReader(dataStream)) { output = (String)rdr.ReadToEnd(); rdr.Close(); } // Close up everything... dataStream.Close(); }
场景说明
变量output加载的是引号分隔、转义规则类似JSON的CSV数据,示例内容如下:
"abc","def","g\"hi"
核心问题
这些双引号在output中会被转换为双写双引号吗?比如变成下面这样:
""abc"",""def"",""g\""hi""
我需要处理示例中"g\"hi"这类带转义引号的内容,想明确读取后的实际格式。
解答
你的代码只是原样读取流中的字节并转换为字符串,不会对CSV里的引号做任何自动转换。也就是说:
- 原CSV里的
"abc"在output里还是"abc" - 原CSV里的
"g\"hi"在output里还是"g\"hi"(注意这里的\"是转义字符,实际字符串中存储的是一个",前面带反斜杠)
代码里的StreamReader.ReadToEnd()只会按指定编码(默认UTF-8)把流的内容完整读成字符串,不会识别CSV格式,也不会做任何格式转换。如果需要处理CSV的转义规则(比如把\"解析成单个",或者处理双写引号的情况),你需要自己实现解析逻辑,或者用专门的CSV处理库。
内容的提问来源于stack exchange,提问作者A. Guattery
相关产品推荐
相关产品推荐

