如何从unicode字符串中获取原始字节?

问题描述 投票:0回答:1

我需要通过 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)

这里出了什么问题?我需要一个解决方案来获取原始字节。

powershell unicode securestring
1个回答
0
投票

这里出了什么问题?我需要一个解决方案来获取原始字节。

这里出现的问题是(某些)原始字节对没有映射到现有的 unicode 字符,因此被 替换为 � - 导致部分数据丢失。

如果您想要字节串到文本的编码(例如,通过基于文本的协议(如 HTTP)传输字节流),base64通常是最佳选择:

# bytes->text
$string = [convert]::ToBase64String($bytes)

# text->bytes
$bytes2 = [convert]::FromBase64String($string)
© www.soinside.com 2019 - 2024. All rights reserved.