Base64到UTF-8字符串解码 - 阿拉伯语文本

时间:2013-04-09 09:47:24

标签: c# asp.net utf-8 base64

我正在尝试解码包含英语和阿拉伯字符混合的Base64数据。我正在使用以下代码进行解码。

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

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

请说明我哪里出错了。

4 个答案:

答案 0 :(得分:2)

搜索了几天。我想出了这个并且正在努力......

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

答案 1 :(得分:1)

您应该在调试器下运行它,看看您是否在string text中获得了正确的阿拉伯语文本:

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

答案 2 :(得分: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);

希望这会有用

答案 3 :(得分:0)

尝试在显示阿拉伯字符的页面中使用编码

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