私は、次の方法使用して文字列にJavaScriptでのByteArrayを変換する場合:JavascriptをC#のUnicode文字列 - headscratcher
convertByteArrayToString: function(byteArray)
{
var s = '';
for(var i = 0;i < byteArray.length;i++)
{
s += String.fromCharCode(byteArray[i])
}
return s;
},
がどのように私は、C#でバイト配列に戻って、この文字列を変換しますか?
Iは、次の3つすべてを試みた:
System.Text.UnicodeEncoding encoding = new System.Text.UnicodeEncoding().GetBytes(myString);
System.Text.UTF32Encoding encoding = new System.Text.UTF32Encoding().GetBytes(myString);
System.Text.UTF8Encoding encoding = new System.Text.UTF8Encoding().GetBytes(myString);
最も近い最初のものであるが、それは、アレイ内の他のすべての要素が0であると、二重元の長さであり、バイト配列を返します時には誤った値または2つを含むことがあります。
私が知っている限り、String.fromCharCodeはUnicodeで動作するので、これをC#とどのように相互運用できるのでしょうか?
これは私をナットにしています!
編集: [139、104、166、35、8、42、216、160、235、153、23、143、105:ここ
は、
オリジナルバイト配列の例であります、3、24、255]
My機能は、これを変換します:C#では "h|#1 *のØのëiÿ"
を、バイト配列に、この文字列をデコードしようとすると、以下の結果が得られます。
System.Text.UnicodeEncodingを使用すると、 [142,0,139,0,104,0,166,0,35,0,8,0,42,0,216,0,32,0,235,0,153,0,23,0,143,0,105、 0,30,24,0,255,0]
それはないです」
base64
エンコーディングを介して行われます長さの2倍 "です。 C#の文字列はリトルエンディアンのUTF16なので、30文字の文字列は60バイトです。最も一般的な英数字の文字は0xFF未満であり、2番目の(より重要な)バイトは0です。 –エンコードは暗号化ではありません。 Unicode文字ポイントは、文字エンコードすることができます。 UTF-8またはUTF-16を使用します。エンコーディングは、データを符号化する方法である(バイトは通常暗示される)。ベース64または16進数。暗号化は機密性を作成する方法です。 AES。 –