我正在尝试解码包含英文和阿拉伯字符混合的 Base64 数据。我正在使用以下代码进行解码。
var bytes = Convert.FromBase64String(data); //data contains base64 data
string text = Encoding.UTF8.GetString(bytes);
解码后,我将其显示在 ASP 页面上。我的问题是,英文文本显示正确,而代替阿拉伯文本,我得到的是空框和这样的问号。��������</p>
请建议我哪里出错了。
经过几天的搜索。我想出了这个并且正在工作..
byte[] plain = Convert.FromBase64String(data);
Encoding iso = Encoding.GetEncoding("ISO-8859-6");
newData = iso.GetString(plain);
return newData;
你应该在调试器下运行它,看看你是否得到了正确的阿拉伯文本string text
:
text
不正确,则字节(Base64 解码后)未编码为 UTF-8,而是其他一些编码 - UTF-16、Windows-1256 等。text
正确,则在 ASP.NET 页面上显示时它会损坏。在这种情况下,您应该将页面的编码设置为支持阿拉伯语的编码 - 最好是 UTF-8,正如 Shekhar 建议的那样。试试这个
byte[] dec1_byte = Base64.decodeBase64(data.getBytes());
String dec1 = new String(dec1_byte);
byte[] newBytes = Base64.encodeBase64(dec1_byte);
String newStr = new String(newBytes);
希望这会奏效
尝试在显示阿拉伯字符的页面中使用编码
<%@ Page RequestEncoding="utf-8" ResponseEncoding="utf-8" %>