The ?
mark is a proper symbol to start a query string. Do not encode it.
The =
sign is being used to separate a URL query parameter from its value. Do not encode it.
The numbers are perfectly safe unreserved URI characters and do not need to be encoded.
The comma should be encoded since it is a reserved character.
The curly braces, technically, should be encoded since they are not listed as reserved or unreserved characters in RFC 3986.
See the percent-encoding article on Wikipedia for more details.
So you probably want:
myapp://search?range=%7b1%2c3%7d