使用PowerShell确定字符串的大小(以字节为单位)

Tre*_*van 4 string powershell

我正在使用PowerShell将消息写入消息队列,消息队列上有消息大小限制.在将消息写入队列之前,我需要知道字符串的字节数.

我怎样才能知道字符串有多少字节,所以我可以在写入队列之前进行大小比较?

Tre*_*van 8

答案取决于您正在使用的文本编码.

您可以GetByteCount()在几种不同的文本编码上使用静态方法.假设您使用的是UTF-8文本编码,您可以UTF8System.Text.Encoding类上引用静态属性,以获取对该UTF8Encoding类的引用.

这是一个示例,我们检索一个System.Diagnostics.Process对象,将其转换为JSON表示,然后在给定UTF8编码的情况下确定它使用了多少字节.

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

这是相同的示例,但将文本编码更改为ASCII.

[System.Text.Encoding]::ASCII.GetByteCount($Process)
Run Code Online (Sandbox Code Playgroud)

如果输入字符串不包含任何Unicode字符,则对于ASCII和UTF-8字节计数应该得到相同的结果.

注意:System.Text.Encoding基类声明一个名为的虚方法GetByteCount(),但是由子类(例如UTF8Encoding)实际实现此方法.

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