Visual RFC.
ALL RFCs / RFC 8187
Read the RFC ↗
RFC 8187 / DEFINE AND ENCODE A PARAMETER

Read charset, language and value

02

An extended value has a required character-encoding label, an optional language tag and encoded value data, separated by two apostrophes.

RFC 8187 · § 3.2.1EXAMPLE
3 / 3
Read charset, language and valueThe official pound-sign example is divided into charset utf-8, language en and value-chars %C2%A3%20rates with two literal apostrophe delimiters. A second comparison allows an empty language while stopping the empty-charset candidate at its grammar check. A final comparison keeps valid unquoted ext-value separate from an invalid double-quoted string. Parser tolerance is not promoted to valid syntax; no universal response-rejection or recovery rule is asserted.charset + apostrophe + language + apostrophe + datatitle*=UTF-8''%C2%A3%20ratesValid unquoted extended tokentitle*="UTF-8''%C2%A3%20rates"quoted-string as ext-valueParser tolerance does not change the grammar
03
Reject the assumption that quoted-string is valid here.

The unquoted extended token is valid syntax. A separately illustrated double-quoted version is not valid ext-value; parser tolerance does not change the grammar.

Source for this drawing: RFC 8187 · Read RFC section 3.2.1 ↗

Protocol participantThreat or exceptionProtocol controlSimplified drawings · precise section references
New to this? Start hereA quick picture + helpful background

A message needs an address.

Think of a packet as a small addressed envelope. Devices pass it onward; transport protocols decide what delivery promises an application gets.

Helpful first, if these ideas are unfamiliar

These pictures are analogies to help you learn. The linked RFC explains the actual rules.

Terms in this drawing
Charset
A label for a character encoding, here required UTF-8 for producers.
Language tag
An optional label such as en for English; it does not translate the value.
Token
An unquoted sequence following the allowed syntax, not an arbitrary quoted string.
Related RFCs and changes

“Updates” changes part of an earlier RFC. “Obsoletes” replaces it. This list shows selected related documents.

KEY POINT

The charset is required even when the language tag is empty.

  • The form is charset'language'value-chars. Character-encoding names and language tags are case-insensitive; language information may be empty, while charset cannot be omitted.
  • Producers MUST use UTF-8. Recipients implementing RFC 8187 MUST support UTF-8. Other charset tokens in the grammar are reserved for future extension; they are not an unrestricted choice for today’s producer.
  • An extended value is an unquoted token. Wrapping it in a double-quoted string is invalid under this profile, even if a generic parser happens to accept it. Ordinary parameters can have their own quoted-string rules.
DETAILS

The sample title* follows the fictional adopting field from §4. Apostrophes delimit three parts; they are not quote marks around the whole value. A language tag describes the text’s language; it does not translate the text, select its charset or authenticate its author.

Read the RFC section ↗

All chapters in RFC 8187

Drawing view

Scroll the drawing to see every part. Playback controls stay above it.

RFC 9700 / CHAPTERS

Chapters

For full details, tables, algorithms, and exceptions, read the original RFC.

RFC status and corrections ↗