PowerShellを使用して、メッセージサイズに制限があるメッセージキューにメッセージを書き込みます。キューにメッセージを書き込む前に、文字列のバイト数を知る必要があります。PowerShellを使用して文字列のサイズをバイト単位で確認します。
文字列のバイト数がわかるので、キューに書き込む前にサイズ比較を実行できますか?
PowerShellを使用して、メッセージサイズに制限があるメッセージキューにメッセージを書き込みます。キューにメッセージを書き込む前に、文字列のバイト数を知る必要があります。PowerShellを使用して文字列のサイズをバイト単位で確認します。
文字列のバイト数がわかるので、キューに書き込む前にサイズ比較を実行できますか?
これに対する回答は、使用しているテキストエンコーディングによって異なります。
静的メソッド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
はい、メッセージで使用しているエンコードは何ですか?送信者と受信者の両方がそれを知って使用しなければなりません。 (「UTF-8文字」:UTF-8はUnicode文字セットのエンコーディングで、UTF-16は文字列とデータ型のエンコーディングです。したがって、すべての文字はUnicodeです)。 –