SGVsbG8sIHdvcmxkIQ ==我必須編寫兩個腳本,一個用於Windows Server,另一個用於Ubuntu Server。爲了說明這一點,如果我的bash腳本運行:Powershell ToBase64String與Linux之間的不同輸出base64
echo -n 'BASE64' | base64
結果是QkFTRTY0
。如果我的PowerShell腳本運行:
[System.Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes('BASE64'))
結果是QgBBAFMARQA2ADQA
。重要的是在Linux中獲得相同的PowerShell字符串。任何人都知道爲什麼這種差異和解決我的問題?我認爲這個問題與Unix的UTF-8編碼有關,但我找不到解決方案。我可以解碼Linux中的PowerShell輸出,但是我無法在Linux中編碼字符串,並得到與PowerShell相同的結果。 bash解決方案是最佳的,但C/C++代碼解決方案或指南也可以工作。
如果你做'[System.Convert] :: ToBase64String([System.Text.Encoding] :: UTF8.GetBytes('BASE64'))''? –
@ScottChamberlain,我必須在Linux中得到'Unicode.GetBytes'的相同結果。 – 1e100
因爲Linux使用utf8,所以你不能使它相同,並且你迫使Unicode,因此它有兩個不同的字節數組。爲什麼你需要強制Unicode編碼,使用'UTF8.GetBytes'返回正確的結果。 –