1

我完全被难住了。我有一个程序可以提取存储在数据库中的信息,将数据库值分配给相应的类。该类具有打印其字段值的打印方法。用户输入订单 ID 或订单日期范围,然后它会找到这些订单并将它们打印到文本文件中。我遇到的问题是,有时,根据您选择的 id 和日期,文本文件会打印出这样的垃圾。“〢ⰢⱰ潋玱刬瑓抛弃圬扥†′愠岁瑥㔬㈶‸⁗㈱琰瑥敲瑥Ⱜ汁楳Ɒ䱉㘬㠰㌰”在这里我完全一无所知,因为当我调试它时,所有的值都显示出来在类、打印方法和结果集中正确。可能是什么问题呢?有没有人遇到过这种情况?

操作系统是 Windows Vista,我使用的语言是 C#。我正在使用带有 FileStream 作为参数的 StreamWriter 类。

这只发生在某些订单上。就像我选择订单 7 或订单 1-6 一样,它工作正常,但如果我选择 1-7,我会得到奇怪的语言。???

谢谢

4

2 回答 2

4

根据您的评论,记事本会尝试猜测文件的编码。在这里查看它是如何做到的

您应该明确说明文件的编码。

从文档中

StreamWriter 默认使用 UTF8Encoding 的实例,除非另有说明。这个 UTF8Encoding 实例是在没有字节顺序标记 (BOM) 的情况下构造的,因此它的 GetPreamble 方法返回一个空字节数组。要使用 UTF-8 编码和 BOM 创建 StreamWriter,请考虑使用指定编码的构造函数,例如 StreamWriter(String, Boolean, Encoding)。

于 2008-12-26T19:34:46.560 回答
2

看起来像是与 Unicode 之间的错误转换,或者设置了文化变量但未正确应用。

于 2008-12-26T18:11:37.960 回答