2

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

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

解码后,我将其显示在 ASP 页面上。我的问题是,英文文本显示正确,而代替阿拉伯文本,我得到的是空框和这样的问号。��������</p>

请建议我哪里出错了。

4

4 回答 4

3

经过几天的搜索。我想出了这个并且正在工作..

byte[] plain = Convert.FromBase64String(data);
Encoding iso = Encoding.GetEncoding("ISO-8859-6");
newData = iso.GetString(plain);
return newData;
于 2013-04-22T06:53:28.803 回答
1

你应该在调试器下运行它,看看你是否得到了正确的阿拉伯文本string text

  • 如果text不正确,则字节(Base64 解码后)未编码为 UTF-8,而是其他一些编码 - UTF-16、Windows-1256 等。
  • 如果text正确,则在 ASP.NET 页面上显示时它会损坏。在这种情况下,您应该将页面的编码设置为支持阿拉伯语的编码 - 最好是 UTF-8,正如 Shekhar 建议的那样。
于 2013-04-09T10:50:09.600 回答
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);

希望这会奏效

于 2013-04-09T09:52:15.287 回答
0

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

<%@ Page RequestEncoding="utf-8" ResponseEncoding="utf-8" %>
于 2013-04-09T09:56:46.370 回答