繁体   English   中英

在C#.NET中编码非ascii字符

[英]Encode non ascii characters in C# .NET

我想在我的应用程序发送的电子邮件中添加自定义标头。 标题名称只能包含ASCII字符,但对于值和用户可能输入UTF-8字符,我必须对它们进行base64编码。 此外,我必须将它们解码回UTF-8,以便在UI中将它们显示回用户。

最好的方法是什么?

要将.net字符串转换为base 64,请使用UTF8作为基础编码:

string base64 = Convert.ToBase64String(Encoding.UTF8.GetBytes(text));

并扭转过程:

string text = Encoding.UTF8.GetString(Convert.FromBase64String(base64));

完全可以跳过UTF8步骤。 但是,UTF8通常会导致UTF16的有效载荷较小,因此我建议使用UTF8作为底层编码。


当你说用户可以输入UTF8字符时,我不确定你的意思。 .net框架使用UTF16作为其工作字符串编码。 您在.net中使用的字符串始终使用UTF16编码。 也许您只是意味着文本可以包含非ASCII字符。

要编码字符串:

var someUtf8Str = "ఠఠfoobarఠఠ";
var bytes = Encoding.UTF8.GetBytes(someUtf8Str);
var asBase64Str = Convert.ToBase64String(bytes);

解码它:

var bytes = Convert.FromBase64String(asBase64Str);
var asUtf8Str = Encoding.UTF8.GetString(bytes);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM