I have not yet figured out how to keep capital letters through the encoding/decoding process. As far as I am aware, using my method it is completely impossible. To have capital characters, I would need to use a different method... Though I know of none that would work. However, Scratch usernames are not case-sensitive. This means that if your username is scratchcat1234, nobody can have the username SCRATCHCAT1234. So any username you see will be 100% accurate to who it is. Everything here is made 100% by me, without referencing any other sources. You may only use this if you give credit.
When Scratch 3.0 was released, you could no longer put anything other than numbers in a cloud variable. This meant that you could not easily store usernames on the cloud, and therefore could not easily show, say, the holder of a highscore on a game, but you could show the highscore itself. People really did not like this, but there are ways to get around it: encoding each character into a string of numbers that CAN be uploaded to the cloud, then decoding those into the original text, then showing the decoded message. I found a way to do that exact thing here.