Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么我的C#转义字符在从基64解码时不起作用?_C#_Stringescapeutils - Fatal编程技术网

为什么我的C#转义字符在从基64解码时不起作用?

为什么我的C#转义字符在从基64解码时不起作用?,c#,stringescapeutils,C#,Stringescapeutils,我制作了一个简单的打印应用程序,我使用\n,\t来打印文本格式,如制表符或新行 当我使用像这样的硬代码输入时,它可以完美地运行 isi = "ARIEF - JL. ANGGA JAYA II\n\t\t\t\tSTRUK PEMBAYARAN NEXXT MEDIA\n\nIDPEL\t\t\t: 09343590348509435\nTGL. BAYAR\t\t: 2017-09-02 10:26:53 \t\t\tTAGIHAN\t: 1.000.000\nPRODUK\t\t:\t\t\

我制作了一个简单的打印应用程序,我使用
\n
\t
来打印文本格式,如制表符或新行

当我使用像这样的硬代码输入时,它可以完美地运行

isi = "ARIEF - JL. ANGGA JAYA II\n\t\t\t\tSTRUK PEMBAYARAN NEXXT MEDIA\n\nIDPEL\t\t\t: 09343590348509435\nTGL. BAYAR\t\t: 2017-09-02 10:26:53 \t\t\tTAGIHAN\t: 1.000.000\nPRODUK\t\t:\t\t\t\t\tADMIN\t\t: 2.500\nNAMA\t\t\t: RYAN\t\t\t\t\tTOTAL\t\t: 1.500.000\nREF\t\t\t: ARIEF - JL. ANGGA JAYA II\n\n\t\t\tCATUR TUNGGAL KAB SLEMAN DAISTA YOGYAKARTA\n\n\t\t\tSTRUK INI MERUPAKAN BUKTI PEMBAYARAN YANG SAH\n\t\t\t     HUBUNGI CUSTOMER SUPPORT LOKET PPOB ANDA\n";
运行方式如下:

但当我使用以下代码从base64 decode获取字符串时:

public string base64ToString(string str)
{
    byte[] data = Convert.FromBase64String(str);
    return Encoding.UTF8.GetString(data).ToString();
}
它不再转义格式并获得以下布局:

我的代码有问题吗?还是我缺少一些基本的C#知识

以下是UTF-8 base64编码字符串:

QVJJRUYgLSBKTC4gQU5HR0EgSkFZQSBJSVxuXHRcdFx0XHRTVFJVSyBQRU1CQVlBUkFOIE5FWFhUIE1FRElBXG5cbklEUEVMXHRcdFx0OiAwOTM0MzU5MDM0ODUwOTQzNVxuVEdMLiBCQVlBUlx0XHQ6IDIwMTctMDktMDIgMTA6MjY6NTMgXHRcdFx0VEFHSUhBTlx0OiAxLjAwMC4wMDBcblBST0RVS1x0XHQ6XHRcdFx0XHRcdEFETUlOXHRcdDogMi41MDBcbk5BTUFcdFx0XHQ6IFJZQU5cdFx0XHRcdFx0VE9UQUxcdFx0OiAxLjUwMC4wMDBcblJFRlx0XHRcdDogQVJJRUYgLSBKTC4gQU5HR0EgSkFZQSBJSVxuXG5cdFx0XHRDQVRVUiBUVU5HR0FMIEtBQiBTTEVNQU4gREFJU1RBIFlPR1lBS0FSVEFcblxuXHRcdFx0U1RSVUsgSU5JIE1FUlVQQUtBTiBCVUtUSSBQRU1CQVlBUkFOIFlBTkcgU0FIXG5cdFx0XHRIVUJVTkdJIENVU1RPTUVSIFNVUFBPUlQgTE9LRVQgUFBPQiBBTkRBXG4=
我用这个得到了这个字符串:


您使用的工具不适合此工作。它将您粘贴到其中的文本(反斜杠和所有字符)转换为base64字符串。从程序员的角度来看,它将
\n
更改为
“\\n”
。要使该工具正常工作,您不能输入
\n
并期望看到换行符,您需要实际键入换行符。与
\t
相同,您需要输入实际的制表符(假设该工具不对数据进行任何附加处理)

用代码对其进行编码会更容易

string EncodeString(string str, Encoding encoding = null)
{
    encoding = encoding ?? Encoding.UTF8;
    return Convert.ToBase64String(encoding.GetBytes(str));
}
string DecodeString(string str, Encoding encoding = null)
{
    encoding = encoding ?? Encoding.UTF8;
    return encoding.GetString(Convert.FromBase64String(str));
}

我想您的base64字符串可能有问题。你能把它贴在这里吗?谢谢你的回复,我已经编辑了我的问题。你是如何编码这个字符串的?显然,您在字符串中添加了literal
\n
\t
,而不是换行符和制表符。@JeffMercado,是的,我只是对isi变量的值进行了编码。这就是问题所在,您的编码不正确。首先向我们展示您是如何获得编码字符串的。啊哈,,,您是对的,,,字符串\t已由编码器工具转换为\\t。。。谢谢你。。。我的想法没有达到那里。。。为你竖起大拇指,先生。。。