【问题标题】:Windows service and default code page/culture setting?Windows 服务和默认代码页/文化设置?
【发布时间】:2010-06-14 13:05:57
【问题描述】:

我正在编写一个服务,它将从目录中读取文件,读取文件的内容并处理内容。

我遇到了从文件中读取的瑞典语字符的问题,因为它们在被读取时被服务翻译成“垃圾字符”。

是否有人知道服务控制管理器正在使用什么默认代码页/区域性设置,或者您是否知道任何有关在 Windows 服务编程上下文中处理瑞典语字符的“最佳实践”的文章?

感谢任何帮助。

【问题讨论】:

  • 你如何阅读文件?我敢打赌这是字符出现乱码的地方,而不是因为您的程序作为服务运行。你能告诉我们你的代码吗?
  • 你是对的。我没有考虑 StreamReader 构造函数中的 Encoding 选项,这是我的问题。我已经修改了我的代码,现在它可以工作了。谢谢!

标签: c# windows-services currentculture codepages


【解决方案1】:

这可能与您读取文件的方式以及文件的编码方式有关。 例如,如果文件是用 UTF-8 编码的,而你用 ASCII 读取它,那么特殊字符将是垃圾。

例如:

using (var fileStream = new StreamReader(@"path to file", Encoding.UTF8))
{
    Console.Write(fileStream.ReadToEnd());
}

您可以更改Encoding.UTF8 以匹配用于创建文件的编码。

【讨论】:

  • 感谢您的指点。我只需要弄清楚要使用哪种编码并使它起作用。我在 StreamReader construtcor 中使用了 Encoding.GetEncoding(1252),这让我很开心。谢谢!
猜你喜欢
  • 2013-05-08
  • 1970-01-01
  • 1970-01-01
  • 2014-08-14
  • 1970-01-01
  • 1970-01-01
  • 2010-11-10
  • 2017-06-17
  • 2022-01-09
相关资源
最近更新 更多