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 ページに表示すると破損します。その場合、ページのエンコードをアラビア語をサポートするものに設定する必要があります。Shekhar が示唆するように、UTF-8 が最適です。
于 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 に答える