当我生成一个随机的字节序列,把这个序列解码成一个字符串表示,然后再把它编码回一个字节数组,它与原来编码的序列不同.请参见下面的示例:
[byte[]]$key = [byte[]]::new(32)
[System.Security.Cryptography.RandomNumberGenerator]::Create().GetBytes($key)
$key
输出: 15个 一百七十三 一百九十八 八十九 一百六十二 161 144 104 125 86 一百五十四 204 166 二百三十八 一百九十三 40岁 51 58 一百六十七 0 一百五十 一百一十八 37 203 一百九十八 161 64 229 101 25个 一百七十六 201
$decoded = [System.Text.Encoding]::UTF8.GetString($key)
$encoded = [System.Text.Encoding]::UTF8.GetBytes($decoded)
$encoded
输出: 15个 二百三十九 一百九十一 189 二百三十九 一百九十一 189 八十九 二百三十九 一百九十一 189 二百三十九 一百九十一 189 二百三十九 一百九十一 189 104 125 86 二百三十九 一百九十一 189 204 166 二百三十九 一百九十一 189 二百三十九 一百九十一 189 40岁 51 58 二百三十九 一百九十一 189 0 二百三十九 一百九十一 189 一百一十八 37 二百三十九 一百九十一 189 一百九十八 161 64 二百三十九 一百九十一 189 101 25个 二百三十九 一百九十一 189 二百三十九 一百九十一 189
在解码/编码之后,字节序列被明显地修改.如果我使用[System.Text.Encoding]::Unicode...
,则此过程运行良好.UTF8似乎不能处理某些字节,但我的印象是UTF8应该能够处理Unicode标准中的任何字符.谁能解释一下为什么会发生这种情况?请和谢谢