编码文本以删除转义字符

时间:2013-03-05 17:12:00

标签: c# .net character-encoding

我以前使用UTF8编码存储了从URL下载的字符串。

\"TEXT LINE ONE\"\r\n\"MORE TEXT LINE\"

基本上它是CSV格式。当我读回字符串来操纵它时,它显然仍然有所有编码的字符。

到目前为止,我已经完成了它,我知道逃脱的角色,只需更换它们。但是想知道将字符串转换为byte []然后转换为字符串的正确方法,我可以做mystr = mystr.Trim('"'); on。

如何使用System.Text.Encoding从上面的字符串到使用字符串函数的字符串?

更新

原始CSV看起来像

"TEXT LINE ONE"
"MORE TEXT LINE"

好的,所以不要用逗号分隔,但你明白了。

// load the data from URL
WebRequest request = WebRequest.Create(csvUrl);
request.Timeout = 30 * 60 * 1000;
request.UseDefaultCredentials = true;
request.Proxy.Credentials = request.Credentials;
WebResponse response = (WebResponse)request.GetResponse();
using (Stream s = response.GetResponseStream())
{
    var str = Encoding.UTF8.GetString(ReadFully(s)); 
}

在这种情况下str == \"TEXT LINE ONE\"\r\n\"MORE TEXT LINE\"

然后我将它放入流中,然后将其序列化。

using (Stream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes (str)))
{
   // save
   // now it's saved with literal characters for each \"
}

1 个答案:

答案 0 :(得分:0)

我不确定我是否完全理解您的问题,但您可以使用以下方法在String和byte []之间进行转换:

byte[] myBytes = Encoding.UTF8.GetBytes(myString);

...和...

String myString = Encoding.UTF8.GetString(myBytes);

如果您愿意,可以使用不同的编码而不是UTF8。