Najpierw przeczytaj komentarze, ta odpowiedź prawdopodobnie wyciąga błędne wnioski z właściwych źródeł, wymaga edycji.
Możesz użyć dowolnych drukowalnych znaków ASCII i żadnych specjalnych znaków, takich jak ✰ (co nie jest ASCII )
Wskazówka : w JSON możesz zakodować wszystko.
Edycja : na początku może nie być oczywiste, kodowanie znaków zdefiniowane w nagłówku dotyczy tylko treści odpowiedzi, a nie samego nagłówka. (Ponieważ spowodowałoby to problem z kurczakiem i jajkiem).
Chciałbym podsumować wszystkie istotne definicje zgodnie ze specyfikacją, do której link zawiera Penchant.
message-header = field-name ":" [ field-value ]
field-name = token
field-value = *( field-content | LWS )
Więc szukamy wartości pola .
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 oznacza Linear White Space. Zasadniczo LWS to spacja lub tabulator, ale możesz podzielić wartość pola na wiele wierszy, rozpoczynając nowy wiersz przed spacją lub tabulatorem.
Uprośćmy to do tego:
field-value = <any field-content or Space or Tab>
Teraz szukamy treści terenowych .
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
TEKST jest najbardziej ogólny i zawiera całą resztę - więc zapomnij o reszcie -.
Oto zestaw znaków US-ASCII (= ASCII)
Jak widać, wszystkie drukowalne znaki ASCII są dozwolone.