%E2%80%99 is the URL-encoded right single quotation mark (’).

In a URL, %E2%80%99 stands for the right single quotation mark (’) (3 UTF-8 bytes). Here is when to encode it, what it does in each part of a URL, and what every major language outputs.

Quick facts

Character’
NameRight single quotation mark (’)
UnicodeU+2019
UTF-8 bytesE2 80 99 (3 bytes)
Percent-encoded%E2%80%99
Lowercase form%e2%80%99 — identical meaning
Double-encoded%25E2%2580%2599
HTML form encoding%E2%80%99
RFC 3986 classNot allowed in URLs
HTML entity’

What it means in a URL

The curly apostrophe (U+2019) is three bytes in UTF-8: %E2%80%99. Word processors and phones insert it automatically in place of '. Decoded with the wrong charset it shows up as ’.

RFC 3986 class: Not allowed in URLs. It is outside the characters RFC 3986 permits, so it must always be percent-encoded.

When to encode it

Where it appearsWhat to do
Path segmentEncode
Query valueEncode
FragmentEncode
Form bodyEncode

The mistake to watch for

Seeing ’ in decoded text: the bytes are UTF-8 but were read as Windows-1252. Decode as UTF-8.

What each language produces

Every function in this table encodes it. Output for the single character, UTF-8 input, tested against the real runtimes (see the encoding comparator for your own strings).

FunctionOutput
JavaScript encodeURIComponent(s)%E2%80%99encoded
JavaScript encodeURI(s)%E2%80%99encoded
JavaScript URLSearchParams%E2%80%99encoded
Python urllib.parse.quote(s)%E2%80%99encoded
Python quote(s, safe="")%E2%80%99encoded
Python urllib.parse.quote_plus(s)%E2%80%99encoded
PHP rawurlencode($s)%E2%80%99encoded
PHP urlencode($s)%E2%80%99encoded
Java URLEncoder.encode(s, UTF_8)%E2%80%99encoded
Go url.QueryEscape(s)%E2%80%99encoded
Go url.PathEscape(s)%E2%80%99encoded
Ruby URI.encode_www_form_component(s)%E2%80%99encoded
Ruby ERB::Util.url_encode(s)%E2%80%99encoded
C# / .NET Uri.EscapeDataString(s)%E2%80%99encoded

Decoding it

decodeURIComponent('%E2%80%99') returns the right single quotation mark (’). Python: urllib.parse.unquote('%E2%80%99'); PHP: rawurldecode('%E2%80%99'). Paste any string into the URL decoder to decode it in your browser.

← %C2%A0 Non-breaking space  ·  Full URL encoding table  ·  %C3%A9 Latin small letter e with acute (é) →

Common questions.

%E2%80%99 is the percent-encoded form of the right single quotation mark (’) — UTF-8 bytes E2 80 99, each written as % plus two hex digits. Decoding the URL turns it back into the character.

Yes. Hex digits in percent-encoding are case-insensitive, so %e2%80%99 and %E2%80%99 mean the same thing. RFC 3986 recommends uppercase, and mixing cases can make caches and analytics count one URL as two.

Use your language’s encoder on the value: encodeURIComponent in JavaScript gives %E2%80%99, Python’s quote(s, safe="") gives %E2%80%99, PHP’s rawurlencode gives %E2%80%99.

More from the toolkit.

About this page. Written and maintained by Sri Murugan Systems, the developer of urlencodedecode.com. Character classes follow RFC 3986 §2; language outputs were generated by running each function in its real runtime.