在我的ASP.Net应用程序工作过程中,我需要使用字符串做一些工作,这类似于
=?utf-8?B?SWhyZSBCZXN0ZWxsdW5nIC0gVmVyc2FuZGJlc3TDpHRpZ3VuZyAtIDExMDU4OTEyNDY=?=
如何将其解码为普通人类语言?
提前致谢!
更新
Convert.FromBase64String()
不适用于字符串,等于
=?UTF-8?Q?Bestellbest=C3=A4tigung?=
我得到The format of s is invalid. s contains a non-base-64 character, more than two padding characters, or a non-white space-character among the padding characters.
例外。
更新
更新
什么样的字符串编码是:Nweiß
???
答案 0 :(得分:3)
我写了一个可以解码这些字符串的库。您可以在http://github.com/jstedfast/MimeKit
找到它具体来说,请查看MimeKit.Utils.Rfc2047.DecodeText()
答案 1 :(得分:2)
那不是UTF8。这是一个Base64编码的字符串。
UTF-8仅表示目标字符串是UTF8格式。 解码Base64字符串后:
SWhyZSBCZXN0ZWxsdW5nIC0gVmVyc2FuZGJlc3TDpHRpZ3VuZyAtIDExMDU4OTEyNDY=
您将获得以下结果:
Ihre Bestellung - Versandbestätigung - 1105891246
答案 2 :(得分:2)
它实际上是一个base-64字符串:
string zz = "SWhyZSBCZXN0ZWxsdW5nIC0gVmVyc2FuZGJlc3TDpHRpZ3VuZyAtIDExMDU4OTEyNDY=";
byte[] dd = Convert.FromBase64String(zz);
// Returns Ihre Bestellung - Versandbestätigung - 1105891246
string yy = System.Text.Encoding.UTF8.GetString(dd);
答案 3 :(得分:2)
这似乎是MIME标头编码。第二个示例中的Q表示它是Quoted Printable。
This question似乎很好地涵盖了变体。在快速搜索中,我没有找到任何.NET库来自动解码,但如果需要,手动操作并不困难。
答案 4 :(得分:1)
看起来像一个base64字符串。
尝试Convert.FromBase64String
http://msdn.microsoft.com/en-us/library/system.convert.frombase64string.aspx
答案 5 :(得分:1)
这是一个编码字,当存在非ASCII内容时,会在电子邮件标头中使用。编码的单词在RFC 2047中定义:
http://tools.ietf.org/html/rfc2047#section-2
编码字的BNF是:
encoded-word = "=?" charset "?" encoding "?" encoded-text "?="
所以解释这个问题的正确方法是:
正如@Shai正确指出的那样,结果是:
Ihre Bestellung - Versandbestätigung - 1105891246
这是德国人。变音符号显然是UTF-8的原因,因此需要编码的单词。翻译是:
Your order - Delivery confirmation - 1105891246
显然,这是订单的跟踪编号。
所有现代电子邮件客户端(和Outlook)都透明地支持编码的单词。
答案 6 :(得分:0)
这有点猜测,但让我们试试
=?
,从结束?=
?
B?
- 不知道,它是什么byte[]
System.Convert.FromBase64String()
Encoding.GetSTring()
将其转换为最终字符串