Veuillez d'abord lire les commentaires, cette réponse tire probablement de fausses conclusions des bonnes sources, doit être modifiée.
Vous pouvez utiliser n'importe quel caractère ASCII imprimable, et aucun caractère spécial comme ✰ (qui n'est pas ASCII )
Astuce : vous pouvez tout encoder en JSON.
Edit : peut ne pas être évident au début, le codage de caractères défini dans l'en-tête ne s'applique que pour le corps de la réponse, pas pour l'en-tête lui-même. (Comme cela causerait un problème de poulet et d'oeuf.)
Je voudrais résumer toutes les définitions pertinentes selon les spécifications liées par Penchant.
message-header = field-name ":" [ field-value ]
field-name = token
field-value = *( field-content | LWS )
Donc, nous sommes après field-value .
LWS = [CRLF] 1*( SP | HT )
CRLF = CR LF
CR = <US-ASCII CR, carriage return (13)>
LF = <US-ASCII LF, linefeed (10)>
SP = <US-ASCII SP, space (32)>
HT = <US-ASCII HT, horizontal-tab (9)>
LWS signifie Linear White Space. Essentiellement, LWS est un espace ou une tabulation, mais vous pouvez diviser la valeur de votre champ en plusieurs lignes en commençant une nouvelle ligne avant un espace ou une tabulation.
Simplifions-le à ceci:
field-value = <any field-content or Space or Tab>
Maintenant, nous sommes après le contenu du champ .
field-content = <the OCTETs making up the field-value
and consisting of either *TEXT or combinations
of token, separators, and quoted-string>
OCTET = <any 8-bit sequence of data>
TEXT = <any OCTET except CTLs,
but including LWS>
CTL = <any US-ASCII control character
(octets 0 - 31) and DEL (127)>
token = 1*<any CHAR except CTLs or separators>
separators = "(" | ")" | "<" | ">" | "@"
| "," | ";" | ":" | "\" | <">
| "/" | "[" | "]" | "?" | "="
| "{" | "}" | SP | HT
TEXT est le plus général et inclut tout le reste - oubliez donc le reste -.
Voici le jeu de caractères US-ASCII (= ASCII)
Comme vous pouvez le voir, tous les caractères ASCII imprimables sont autorisés.