SGVsbG8sIHdvcmxkIQ == Windows Server 용과 우분투 용으로 두 가지 스크립트를 작성해야합니다. 내 bash는 스크립트가 실행되는 경우, 설명하기 :Powershell ToBase64String과 Linux base64의 출력이 다릅니다
이echo -n 'BASE64' | base64
결과가 QkFTRTY0
입니다. 내 PowerShell 스크립트가 실행되는 경우 :
[System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes('BASE64'))
결과는 QgBBAFMARQA2ADQA
입니다. 중요한 PowerShell 문자열을 Linux에서 가져와야합니다. 누구나 왜이 차이점과 내 문제에 대한 해결책을 알 수 있습니까? 나는이 문제가 유닉스의 UTF-8 인코딩과 관련이 있다고 생각하지만 해결책을 찾을 수 없다. Linux에서 PowerShell 출력을 디코딩 할 수는 있지만 Linux에서 문자열을 인코딩 할 수없고 PowerShell과 동일한 결과를 얻을 수 없습니다. bash 솔루션이 최적이지만 C/C++ 코드 솔루션이나 가이드도 사용할 수 있습니다.
'[System.Convert] :: ToBase64String ([System.Text.Encoding] :: UTF8.GetBytes ('BASE64'))'하면 어떻게 될까요? –
@ScottChamberlain, 나는 리눅스에서'Unicode.GetBytes'와 같은 결과를 얻어야 만한다. – 1e100
리눅스는 utf8을 사용하고 유니 코드를 강요하므로 두 개의 서로 다른 바이트 배열을 가지고 있기 때문에 같은 결과를 얻을 수 없습니다. 왜 UTF8.GetBytes를 사용하여 유니 코드 인코딩을 강요 할 필요가 있습니까? 올바른 결과를 반환합니다. –