url-Encode vs Base64 encoding ( usages)?

I was wondering…

(except the issue with the base64’s plus’+’ sign in query string – which is translated to ‘space’ and can be solved by %2b) :—> which is the preferred way to transfer data in query string?

Both functions can be used through the JS commands:

  • btoa
  • encodeUriComponent

so im asking myself(and you) :

when should I use what ? ( ive always used encodeUriCompoonent – by instinct).

the problem that the definitions are different – but the implementations can be similar…

edit

I think ive found the reason for asking…. ( and why nobody asked it before)

enter image description here

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

base64 is used to transfer binary data. (not supported in IE, cant encode spacial chars.)

encodeURIComponent only encodes special characters.

An interesting thing is that you can’t apply base64 to unicode strings without encodeURIComponent:
https://developer.mozilla.org/en/DOM/window.btoa

Method 2

The answer to this is entirely dependent on your server-side application.

‘+’ is not translated to ‘space’ by the client – it is auto-translated to ‘space’ by some server-side apps, largely for backward-compatibility reasons (conversely, some server-side apps will leave ‘+’ as ‘+’ in compliance with RFC3986 ).

As far as the client is concerned – btoa() and encodeURIComponent() (and encodeURI() and escape()) just encode a string of text into different abstracted strings according to different encoding or escaping algorithms – btoa() usually produces the smallest resultant string using base64 encoding but meze’s comment re: unicode is worth taking into account here.

The important thing to note is what your server-side application (some ASP.NET-based setup in your case) then uses to decode that string back to it’s original form.

Method 3

fwiw, I use base64 whenever I want to transport anything that CAN be unicode, between a server and a client. urlencode doesn’t handle all unicode charachters all that well. It quickly gets a mess with all the percentage signs.

so, in short: expecting unicode input/output, always base64 the transportation.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x