我需要通过 Powershell 从给定的 unicode 字符串中获取原始字节序列。 我做了多次测试,但并没有我想象的那么容易。
这是一个失败的示例:
$bytes = [byte[]]@(239,174,61,217,221,117,215,174,248,221,253,56,219,126,53,221,189,122,211,157,26,231,126,57,50,0)
$string = [System.Text.Encoding]::Unicode.GetString($bytes)
# here i need a solution to get back $bytes from the unicode-string:
$bytes2 = [System.Text.Encoding]::Unicode.GetBytes($string)
# compare result:
cls
[string]::Join(',', $bytes)
[string]::Join(',', $bytes2)
这里出了什么问题?我需要一个解决方案来获取原始字节。
这里出了什么问题?我需要一个解决方案来获取原始字节。
这里出现的问题是(某些)原始字节对没有映射到现有的 unicode 字符,因此被 替换为 � - 导致部分数据丢失。
如果您想要字节串到文本的编码(例如,通过基于文本的协议(如 HTTP)传输字节流),base64通常是最佳选择:
# bytes->text
$string = [convert]::ToBase64String($bytes)
# text->bytes
$bytes2 = [convert]::FromBase64String($string)