【问题标题】:C# Append text with Encoding.UTF8C# 使用 Encoding.UTF8 附加文本
【发布时间】:2017-04-24 09:52:50
【问题描述】:

我有这个代码:

 using (var sw = new StreamWriter(path + kat + "/" + namec, false, Encoding.UTF8))
                            {
                                sw.WriteLine(namex + "," + address + "," + web + "," + email + "," + phone  + "," + linksx + "," + transport);
                            }

如何附加文本并包含 Encoding.UTF8 ?

我试过这个:

 using (StreamWriter sw = File.AppendText(path + kat + "/" + namec, false, Encoding.UTF8))

但我得到了这个:

严重性代码描述项目文件行抑制状态 错误 CS1501 方法“AppendText”没有重载需要 3 参数访问丹麦 C:\Users\???\Documents\Visual Studio 2015\Projects\visitdenmark\visitdenmark\Form1.cs 193 活动

【问题讨论】:

  • 不确定我是否明白,但 StreamWriter 的第二个参数是设置是否应该附加。您可以使用相同的代码,但将参数设置为 true。
  • @ogomrub 好的,请告诉我,你将如何附加它,包括 Encoding.UTF8 ?
  • 我的意思和@Larsupilami 写的一样。您在文件中得到了一些意外字符,可能是您正在使用使用不同于 UTF8 编码的工具打开文件?
  • 我从网站 visitdenmark.dk 获得了字符串示例 我有这个名字 Danhostel Rønne 但我将它存储在 csv 文件中,它看起来像这个 Danhostel Rønne
  • 我有一个非常奇怪的问题,当我将它设置为 false 时,一切正常,它显示像这样的名称“Rønne”但我不能这样做,因为我需要附加它,所以当我将其设置为 true,然后它会正确附加,但会显示类似“Rønne”的名称。很奇怪。

标签: c# csv utf-8


【解决方案1】:

其实错误信息是正确的。声称 AppendText 不接受 3 个参数。

但在我看来,没有必要将您的第一种方法与StreamWriter 放在一边。但是为了附加文本,您应该将第二个参数更改为true

using (var sw = new StreamWriter(path + kat + "/" + namec, true, Encoding.UTF8))
{
    sw.WriteLine(namex + "," + address + "," + web + "," + email + "," + phone + "," + linksx + "," + transport);
}

【讨论】:

  • 但是当我将它设置为 true 时,我会在字符串中得到类似的东西 Ă 它对我没有帮助
  • 在这种情况下,您的输入数据很可能已经被篡改了。因为这段代码正确地处理了 UTF-8。请确认namex、address 等的值格式正确。
  • 我有一个非常奇怪的问题,当我将它设置为 false 时,一切正常,它显示像这样的名称“Rønne”但我不能这样做,因为我需要附加它,所以当我将其设置为 true,然后它会正确附加,但会显示类似“Rønne”的名称。很奇怪。
  • 如果您能提供更多关于场景周围上下文的信息,这可能会有所帮助。我假设有其他东西在干扰。
猜你喜欢
  • 2019-03-14
  • 1970-01-01
  • 1970-01-01
  • 2011-07-17
  • 1970-01-01
  • 2022-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多