【发布时间】:2014-08-13 04:07:46
【问题描述】:
我正在使用 TextFieldParser 解析 X509 证书的 Subject 和 Issuer 字段。例如,如果您查看https://facebook.com 上的证书,您会看到
CN=*.facebook.com,O="Facebook, Inc.",L=Menlo Park,S=CA,C=US
当然,如果不是因为那些讨厌的引号,用逗号分隔那一行会很简单。所以我必须逃避那些。这就是我想使用 TextFieldParser 的原因。我的代码:
string[] subjectPieces = null;
using (MemoryStream memStream = new MemoryStream(Encoding.ASCII.GetBytes(cert.Subject)))
using (Microsoft.VisualBasic.FileIO.TextFieldParser parser = new Microsoft.VisualBasic.FileIO.TextFieldParser(memStream))
{
parser.SetDelimiters(",");
parser.HasFieldsEnclosedInQuotes = true;
subjectPieces = parser.ReadFields();
}
当这段代码运行时,subjectPieces 将返回:
CN=*.facebook.com
O="Facebook
Inc."
L=Menlo Park
S=CA
C=US
如您所见,它根本不考虑用引号括起来的字段。我还不如直接用string.split(',')。
我尝试将HasFieldsEnclosedInQuotes 设置为true 和false,但没有效果。我已经为流尝试了多种字符编码,但没有效果。
【问题讨论】: