【发布时间】:2015-04-16 15:29:23
【问题描述】:
假设我有一个包含此输入的文件:
“奶油甜甜圈,1.00 美元”
如果用户上传了错误编码为 ANSI 的文件,并且我使用 TextFieldParser() 解析它并设置了 UTF8 编码以在无效字节上抛出异常,它将正确地通过异常。它会报告:
“无法将索引 321 处的字节 [E8] 从指定代码页转换为 Unicode。”
属性“UnknownBytes”包含具有单个条目 [232] 的字节数组。 232 是 E8 的十进制等效值。奇怪的是“è”应该真的是 Byte[2] { 195, 168} 我相信。
我想向用户报告是什么字符导致了差异。
最好的方法是什么?
如果我返回 Encoding.UTF8.GetString(ex.UnknownBytes),它将返回 Unicode 替换字符而不是“è”。想必这是因为“232”作为单字节是无效的。
我错过了什么?似乎我拥有对用户有所帮助所需的所有信息,但我无法传达这些信息。
【问题讨论】: