Regarding "å" et al., from the HTML 3.0 specification: Character sets The charset parameter (as defined in section 7.1.1 of RFC 1521) may be used with the text/html content type to specify the encoding used to represent the HTML document as a sequence of bytes. Normally, text/* media types specify a default of US-ASCII for the charset parameter. However, for text/html, if * the byte stream contains data that is not in the 7-bit US-ASCII * set, the HTML interpreting agent should assume a default * charset of ISO-8859-1. Especially note the last three lines. It is explicitly said that ISO 8859-1 is the standard text charset for HTML documents. Regarding "~" in URLs, from the HTTP 1.0 specification: 3.2.1 General Syntax URIs in HTTP/1.0 can be represented in absolute form or relative to some known base URI [9], depending upon the context of their use. The two forms are differentiated by the fact that absolute URIs always begin with a scheme name followed by a colon. URI = ( absoluteURI | relativeURI ) [ "#" fragment ] absoluteURI = scheme ":" *( uchar | reserved ) relativeURI = net_path | abs_path | rel_path net_path = "//" net_loc [ abs_path ] abs_path = "/" rel_path rel_path = [ path ] [ ";" params ] [ "?" query ] path = fsegment *( "/" segment ) fsegment = 1*pchar segment = *pchar params = param *( ";" param ) param = *( pchar | "/" ) scheme = 1*( ALPHA | DIGIT | "+" | "-" | "." ) net_loc = *( pchar | ";" | "?" ) query = *( uchar | reserved ) fragment = *( uchar | reserved ) pchar = uchar | ":" | "@" | "&" | "=" uchar = unreserved | escape unreserved = ALPHA | DIGIT | safe | extra | national escape = "%" hex hex hex = "A" | "B" | "C" | "D" | "E" | "F" | "a" | "b" | "c" | "d" | "e" | "f" | DIGIT reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" safe = "$" | "-" | "_" | "." | "+" extra = "!" | "*" | "'" | "(" | ")" | "," * national = * For definitive information on URL syntax and semantics, see RFC 1738 * [4] and RFC 1808 [9]. The BNF above includes national characters not * allowed in valid URLs as specified by RFC 1738, since HTTP servers are * not restricted in the set of unreserved characters allowed to * represent the rel_path part of addresses, and HTTP proxies may receive * requests for URIs not defined by RFC 1738. Especially note the last lines. They clearly say that ISO 8859-1 characters like "Å", "Ä", "Ö" and "~" are allowed in URLs, since they are part of "national" and not part of "reserved". It is also explicitly said that this differs from the URL definition in the RFCs.