How to decode a Base64 string?
base64, powershell
Solution
Isn't encoding taking the text TO base64 and decoding taking base64 BACK to text? You seem be mixing them up here. When I decode using this online decoder I get:
BASE64: blahblah
UTF8: nVnV
not the other way around. I can't reproduce it completely in PS though. See sample below:
PS > [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("blahblah"))
nV�nV�
PS > [System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("nVnV"))
blZuVg==
EDIT I believe you're using the wrong encoder for your text. The encoded base64 string is encoded from UTF8(or ASCII) string.
PS > [System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String("YmxhaGJsYWg="))
blahblah
PS > [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String("YmxhaGJsYWg="))
汢桡汢桡
PS > [System.Text.Encoding]::ASCII.GetString([System.Convert]::FromBase64String("YmxhaGJsYWg="))
blahblah
Problem
I have a normal string in Powershell that is from a text file containing Base64 text; it is stored in `$x`. I am trying to decode it as such: ``` $z = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($x)); ``` This works if `$x` was a Base64 string created in Powershell (but it's not). And this does not work on the `$x` Base64 string that came from a file, `$z` simply ends up as something like `䐲券`. What am I missing? For example, `$x` could be `YmxhaGJsYWg=` which is Base64 for `blahblah`. In a nutshell, `YmxhaGJsYWg=` is in a text file then put into a string in this Powershell code and I try to decode it but end up with `䐲券` etc.