我正在尝试解码包含英语和阿拉伯字符混合的Base64数据。我正在使用以下代码进行解码。
var bytes = Convert.FromBase64String(data); //data contains base64 data
string text = Encoding.UTF8.GetString(bytes);
解码后我在ASP页面上显示它。我的问题是,英文文本正确显示,而代替阿拉伯语文本,我得到空盒子和这样的问号。
请说明我哪里出错了。
答案 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" %>