Hi everybody, I am busy with the Highscores tutorial with dreamlo on youtube: . I have a little problem with displaying the username in the highscorelist. The usename is a string but when my username consist of two words separated by a space (first name and last name), a '+' sign is placed beween the two words when it is displayed in the scoreboard. I think it's in this code: Code (CSharp): IEnumerator UploadNewHighscore(string username, int score) { WWW www = new WWW(webURL + privateCode + "/add/" + WWW.EscapeURL(username) + "/" + score); yield return www; if (string.IsNullOrEmpty(www.error)) { print ("Upload Successful"); DownloadHighscores(); } else { print ("Error uploading: " + www.error); } } Does anybody knows where this '+' sign is coming from and how I can replace it by a space?
I think it's because you're using it with escapeURL. Certain chars get changed when you use that to make them URL compatible. I bet if you debugged it it might show a + (maybe, this is a guess) If you are displaying it local, just use the string.replace call to replace + with a space. Code (CSharp): String userName = "My+Name"; userName= userName.Replace('+', ' '); Code should do it, but didn't test it, note it's a reference point since you'll have to replace the value depending on where your username comes from. Unity also provides an unEscapeUrl that may just reverse the name https://docs.unity3d.com/ScriptReference/WWW.UnEscapeURL.html
It's from escaping the URL. Since spaces aren't used in URL's, + is one of two standards for escaping it (the other being %20). And you do, absolutely, need to escape the url before you submit it - otherwise you'll be leaving your game open to both bugs and security flaws if players start using weird characters in their names. What you need to do is to un-escape the returned text before you display it on the scoreboard.