2013-08-06 31 views
1

我得到了一个在Windows-1255中编码的字节数组。如何获取以指定编码打开的CSV文件

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文件,我看到Jibberish:

CA÷AAA

解决方案?

+0

你可以发布一个** Jibrish **的例子吗? – christiandev

+0

请将保存的代码发布到CSV。还发布了如何检索现有字节的示例。 – Aphelion

+0

Windows-1255编码是否符合要求?将CSV保存为更加标准的编码能够解决您的问题吗? – Pluc

回答

0

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

无论使用UTF8还是Windows-1255,以下代码都可以正常工作。我可以在记事本++或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。

+0

为什么会出现这个问题? – Nadav

+0

btw,后来我想发送这个编码的字节数组作为MemoryStream(字节)的附件。所以没有办法我即时放弃编码 – Nadav

+0

大声笑...没问题...这就是为什么我提出我的意见......“除非有其他原因”... ...你仍然不需要不必要的解码... – Kevin

相关问题