标签:bash base64 character-encoding powershell linux
这个问题已经在这里有了答案: > Different output between Powershell ToBase64String & Linux base64 1个
这个问题可能已经回答了,但是我找不到
题
如何在bash中“ base64编码”字符串,使其与“ Windows期望”匹配,即“ Unicode.GetBytes.ToBase64String”
语境
Powershell帮助文本包含此示例
$command='dir'
$bytes = [System.Text.Encoding]::Unicode.GetBytes($command)
$encodedCommand = [Convert]::ToBase64String($bytes)
echo $encodedCommand
powershell.exe -encodedCommand $encodedCommand
Windows输出
编码的输出是这样的:
ZABpAHIA
Linux上的结果截然不同
如果我在linux上做同样的事情,我会得到:
echo "dir" | base64
ZGlyCg==
编码?
我尝试使用“ iconv”转换编码,但是没有运气,即结果相同.
echo dir | iconv -f ASCII -t UTF-8 | base64
差异性
因此,您可以看到两个区别:
>字母数字字符不同
>尾随“ ===”出现在Linux上
解决方法:
Powershell中的Unicode是UTF16 LE,而不是UTF8.
Unicode: Encodes in UTF-16 format using the little-endian byte order.
我不使用linux,但是如果您的utf8-sample可以正常工作,则可以尝试:
iconv -f ASCII -t UTF-16 mycmd.txt |base64
标签:bash,base64,character-encoding,powershell,linux 来源: https://codeday.me/bug/20191118/2028582.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。