我使用PowerShell将消息写入消息队列,消息队列上有消息大小限制。在将消息写入队列之前,我需要知道字符串的字节数。
如何计算字符串的字节数,以便在写入队列之前执行大小比较?
答案 0 :(得分:7)
答案取决于您正在使用的文字编码。
您可以在几种不同的文本编码上使用静态方法GetByteCount()
。假设您正在使用UTF-8文本编码,您可以在UTF8
类上引用System.Text.Encoding
静态属性,以获取对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