2017-09-02 28 views
0

我做了一个简单的打印应用程序,我使用\n,\t来创建文本格式,如制表符或新行。为什么我的C#转义字符在从64位解码时不起作用?

当我使用这样的硬代码输入时,它运行完美。

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"; 

和运行这样的:

public string base64ToString(string str) 
{ 
    byte[] data = Convert.FromBase64String(str); 
    return Encoding.UTF8.GetString(data).ToString(); 
} 

它不逃避格式了,并得到:

enter image description here

但是,当我使用此代码从获取的base64解码字符串此布局:

enter image description here

我的代码有问题吗?或者我错过了一些基本的C#知识?

这里是UTF-8 base64编码字符串:

QVJJRUYgLSBKTC4gQU5HR0EgSkFZQSBJSVxuXHRcdFx0XHRTVFJVSyBQRU1CQVlBUkFOIE5FWFhUIE1FRElBXG5cbklEUEVMXHRcdFx0OiAwOTM0MzU5MDM0ODUwOTQzNVxuVEdMLiBCQVlBUlx0XHQ6IDIwMTctMDktMDIgMTA6MjY6NTMgXHRcdFx0VEFHSUhBTlx0OiAxLjAwMC4wMDBcblBST0RVS1x0XHQ6XHRcdFx0XHRcdEFETUlOXHRcdDogMi41MDBcbk5BTUFcdFx0XHQ6IFJZQU5cdFx0XHRcdFx0VE9UQUxcdFx0OiAxLjUwMC4wMDBcblJFRlx0XHRcdDogQVJJRUYgLSBKTC4gQU5HR0EgSkFZQSBJSVxuXG5cdFx0XHRDQVRVUiBUVU5HR0FMIEtBQiBTTEVNQU4gREFJU1RBIFlPR1lBS0FSVEFcblxuXHRcdFx0U1RSVUsgSU5JIE1FUlVQQUtBTiBCVUtUSSBQRU1CQVlBUkFOIFlBTkcgU0FIXG5cdFx0XHRIVUJVTkdJIENVU1RPTUVSIFNVUFBPUlQgTE9LRVQgUFBPQiBBTkRBXG4= 

我得到的字符串,通过使用这样的:

enter image description here

+0

我觉得可能是出错了的base64字符串。你可以在这里发布吗? – Nisarg

+0

感谢您的回复,我已编辑我的问题。 –

+1

你是如何编码该字符串的?显然你在字符串中添加了文字'\ n'和'\ t',而不是换行符和制表符。 –

回答

1

您使用的工具是不是为工作的工具。它将你粘贴在那里的文本文本(反斜杠和全部)转换成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)); 
} 
+0

ahhh ,,,你说得对,,,, 字符串\ t被编码器工具转换为\\ t ... 谢谢... 我虽然没有达到在那里... 为你的竖起大拇指... –

相关问题