【问题标题】:How to get a CSV file opened in a specified encoding如何获取以指定编码打开的 CSV 文件
【发布时间】:2013-08-06 14:05:03
【问题描述】:

我得到一个在 Windows-1255 中编码的字节数组。

Encoding enc = Encoding.GetEncoding("Windows-1255");
...
byte[] bytes = enc.GetBytes(result);

并将其保存为 CSV 文件。

var str = Encoding.GetEncoding(1255).GetString(bytes);
using (StreamWriter sw = new StreamWriter("c:\\folder\\file.csv", false, Encoding.GetEncoding(1255)))
{   
    sw.Write(str);
}

当我打开 CSV 文件时,我看到了乱码:

çã÷ ááä

解决方案?

【问题讨论】:

  • 你能发布一个 Jibrish 的例子吗?
  • 请将保存的代码发布到 CSV。还发布一个如何检索现有字节的示例。
  • 是否需要 Windows-1255 编码?以更标准的编码保存 CSV 会解决您的问题吗?
  • 如何将代码保存到 CSV 文件中?还有你的机器设置的语言环境是什么?
  • @user2265025 最好编辑您的问题并将其放入其中,以便我们获得格式化的好处。

标签: c# csv encoding


【解决方案1】:

编辑:澄清后我明白你为什么要编码为字节......但是你不需要解码你的字节......只需写下你的结果。

无论使用 UTF8 还是 Windows-1255,以下代码都适用于我。我可以在 notepad++ 或 excel 中打开生成的 CSV。

Encoding encodingOfChoice = Encoding.UTF8;
byte[] bytes = encodingOfChoice.GetBytes(text);

using (StreamWriter sw = new StreamWriter("c:\\folder\\folder.csv", 
        false, encodingOfChoice))
{
    sw.Write(result);
}

编辑 2: 这个问题并不是真正编写正确的编码。它正在让打开它的程序正确读取编码。当我使用 Unicode 编码时,我能够让 excel 和 notepad++ 正确读取字符,但我必须将其设置为制表符分隔,以便 excel 在列中正确打开。

【讨论】:

  • 为什么会有这样的问题?
  • 顺便说一句,稍后我想将此编码的字节数组作为 MemoryStream(字节)的附件发送。所以我没办法放弃编码
  • 大声笑...没问题...这就是我发表评论的原因...“除非有其他原因”...您仍然不必不必要地解码...
  • kevin .. 你给 TEXT 写了任何 windows-1255 字符吗?你打开文件后一切都显示正确了吗?
  • 我用数据对其进行了测试,但如果你有特定的字符,你需要它来工作,给我一些示例文本,我可以试试。还可以更快地获得答案...在您的问题中发布类似的内容。
猜你喜欢
  • 2012-08-13
  • 1970-01-01
  • 1970-01-01
  • 2012-09-04
  • 2019-07-05
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 2010-11-28
相关资源
最近更新 更多