Base64位编码转换问题?

zhalianchuxue 2009-02-26 11:03:08
代码如下:
string str="aGVsbG8KW7ncwO3UsV0=";
byte[] contBytes = Convert.FromBase64String(str);
str = Encoding.UTF8.GetString(contBytes);
Console.WriteLine(str);

得到如下结果:
Hello
[?????]


请问是什么原因?该如何解决?
...全文
154 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenwei175528 2009-03-05
  • 打赏
  • 举报
回复
mark and up and study
zhalianchuxue 2009-03-05
  • 打赏
  • 举报
回复
谢谢了
努力学习
结贴了
呵呵
jinjazz 2009-02-27
  • 打赏
  • 举报
回复
字符串"Hello\r\n[管理员]"编码之后就是"aGVsbG8KW7ncwO3UsV0=",你要多看看基础知识了。

取hello

 string str = "aGVsbG8KW7ncwO3UsV0=";
byte[] contBytes = Convert.FromBase64String(str);
str = Encoding.GetEncoding("gb2312").GetString(contBytes);
str=str.Substring(1,str.IndexOf("\r\n"));
zhalianchuxue 2009-02-27
  • 打赏
  • 举报
回复
还有,再问一下:
string str="aGVsbG8KW7ncwO3UsV0=";
定义的市字符串,怎么后面会产生“\r\n”呢?


怎样才能从str中只提取出“Hello”的值呢?
jinjazz 2009-02-26
  • 打赏
  • 举报
回复
\r\n是换行符,也被编码了
zhalianchuxue 2009-02-26
  • 打赏
  • 举报
回复
用上面的办法试了下
[?????]确实可以显示为[管理员]了
现在,我在使用str时,只需要上面的"Hello",不需要下面的"[管理员]",该怎么办呢?
还有,怎么str会显示有两行呢?
talesuowo 2009-02-26
  • 打赏
  • 举报
回复
public static string RemoveNonB64(string strText)
{
return strText.Replace("\0","");
}

public static string deCodeB64s(string strText)
{
return Encoding.Default.GetString(deCodeB64(strText));
}

private static byte []deCodeB64(string strText)
{
byte[] by=null;
try
{
if(strText!="")
{
by=Convert.FromBase64String(strText);
//strText=Encoding.Default.GetString(by);
}
}
catch(Exception e)
{
by=Encoding.Default.GetBytes("\0");
LogError("deCodeB64():"+e.Message);
}
return by;
}



先用RemoveNonB64去除非b64字符 在用deCodeB64s 在看看 应该好用
前两天做邮件解析的时候找到的方法 试试吧
zgke 2009-02-26
  • 打赏
  • 举报
回复
编码方式不对

string _Temp="aGVsbG8KW7ncwO3UsV0=";
byte[] _TextByte = Convert.FromBase64String(_Temp);

string _TextValue = System.Text.Encoding.Default.GetString(_TextByte);

应该是
Hello
[管理员]
jinjazz 2009-02-26
  • 打赏
  • 举报
回复
是ansi编码不是utf-8
jinjazz 2009-02-26
  • 打赏
  • 举报
回复
 string str = "aGVsbG8KW7ncwO3UsV0=";
byte[] contBytes = Convert.FromBase64String(str);
str = Encoding.GetEncoding("gb2312").GetString(contBytes);
Console.WriteLine(str);
zhalianchuxue 2009-02-26
  • 打赏
  • 举报
回复
怎样才能从str中只提取出“Hello”的值呢?

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧