2017-01-03 43 views

答えて

5

これに対する回答は、使用しているテキストエンコーディングによって異なります。

静的メソッドGetByteCount()は、いくつかの異なるテキストエンコーディングで使用できます。あなたがUTF-8テキストエンコーディングを使用していると仮定すると、クラスのUTF8静的プロパティを参照して、UTF8Encodingクラスへの参照を取得できます。

ここでは、System.Diagnostics.Processオブジェクトを取得し、それをJSON表現に変換し、UTF8エンコーディングを使用して使用するバイト数を決定する例を示します。

$Process = Get-Process -Name System | ConvertTo-Json 
[System.Text.Encoding]::UTF8.GetByteCount($Process) 

同じ例ですが、テキストエンコーディングをASCIIに変更します。

[System.Text.Encoding]::ASCII.GetByteCount($Process) 

入力文字列にUnicode文字が含まれていない場合は、ASCII文字列とUTF-8バイト数の両方で同じ結果が得られるはずです。

System.Text.Encoding基底クラスは、GetByteCount()という名前の仮想メソッドを宣言しますが、それは実際にこのメソッドを実装する子クラス(例えばUTF8Encoding。)までです。

https://msdn.microsoft.com/en-us/library/w3739zdy(v=vs.110).aspx

+0

はい、メッセージで使用しているエンコードは何ですか?送信者と受信者の両方がそれを知って使用しなければなりません。 (「UTF-8文字」:UTF-8はUnicode文字セットのエンコーディングで、UTF-16は文字列とデータ型のエンコーディングです。したがって、すべての文字はUnicodeです)。 –

関連する問題