2013-04-09 54 views
2

我试图解码包含英文和阿拉伯字符混合的Base64数据。我正在使用下面的代码来解码。Base64到UTF-8字符串解码 - 阿拉伯文本

var bytes = Convert.FromBase64String(data); //data contains base64 data 
string text = Encoding.UTF8.GetString(bytes); 

解码后,我在ASP页面上显示它。我的问题在于,英文文本显示正确,而代替阿拉伯文本,我得到空白框和这样的问号。

请建议我哪里出错了。

+1

确保该字符串首先从UTF8转换为64,如果它是从cp1256或任何其他编码转换为基础64,您必须使用它来获取字符串。我认为这是问题 – ahmedsafan86 2013-04-09 09:50:47

回答

2

搜索了几天之后。我想出了这一点,并正在努力..

byte[] plain = Convert.FromBase64String(data); 
Encoding iso = Encoding.GetEncoding("ISO-8859-6"); 
newData = iso.GetString(plain); 
return newData; 
0

试试这个

byte[] dec1_byte = Base64.decodeBase64(data.getBytes()); 
    String dec1 = new String(dec1_byte); 
    byte[] newBytes = Base64.encodeBase64(dec1_byte); 
    String newStr = new String(newBytes); 

希望这将工作

+0

这是Java,因为它依赖于平台默认编码,所以甚至不能在那里工作。 – Esailija 2013-04-09 09:55:19

0

尝试使用编码在您的网页上正在显示阿拉伯字符

<%@ Page RequestEncoding="utf-8" ResponseEncoding="utf-8" %> 
1

你应该在调试器下运行这个,看看是否在string text中得到正确的阿拉伯文字:

  • 如果text不正确,则该字节(Base64的解码后)不被编码为UTF-8,但一些其他编码 - UTF-16,Windows的1256等
  • 如果text是正确的,则它得到在ASP.NET页面上显示时会损坏。在这种情况下,您应该将页面的编码设置为支持阿拉伯语的编码 - 正如Shekhar所言,最好是UTF-8。