Need to pass #31# to external voip provided,encoding issue?

I’m trying to add a prefix of either #31# or *31# before the dialed number but it doesn’t work.The voip provider returns this(when #31# is used)
SIP/2.0 400 Invalid startline: Invalid Request URI: Invalid User: %60%60%2331%230555555555’’.
I tried a couple of windows sip clients(x lite,zoiper) and if I connect to the provider via the sip clients it works perfectly fine.However,using the same clients registered to my Asterisk PBX(registered to this provider) returns the above error.Those prefixes are used to withhold Caller ID and I can place calls if don’t use the prefixes.I also tried adding #31# and 31# to my outgoing dialplan
exten => _[

but got the same error.
I noted %60 is ` encoded and %23 is # .Could it perhaps be my Asterisk PBX adding that for some reason?I’m using Asterisk on a router running Openwrt

I don’t understand the %60. The %23 is correct.

You could try disabling pedantic SIP handling. It might prevent the URI being correctly encoded.

Many thanks!Much appreciated!
Worked partly-good for *31#,but not for #31#-still get the same response from the provider.I could see from the console that on the 1st occasion executing *31%23number(as it should be?),but on second executing #31#number(not %2331%23number),tried dialing %2331%number but again executes #31#number and returns %60%60.At first I thought that my pbx added `` at the beginning of the string encoded to %60%60 instead of ’ ’ just like at the end of the number
SIP/2.0 400 Invalid startline: Invalid Request URI: Invalid User: %60%60%2331%23number’ '
Could it be compactheaders ?
Anyway,both prefixes actually achieve the same goal(withholding caller id) so that suits me fine,just curious of the reason.