From: Gustaf N. <ne...@wu...> - 2021-07-11 18:00:32
|
On 11.07.21 14:14, Maksym Zinchenko wrote: > Hello,I'm having trouble with encodings, or maybe I don't understand > something. > My first question is: when I run *"ns_charsets*" command it will not > return UTF-8 encoding in the list, why and what does it mean? Dear Maksym, "ns_charsets" is a code that was not touched since a very long time. In essence, it provides a mapping between "official" charset names and tcl-encodings. In general charsets can have multiple names for the the same thing (preferred MIME name, official name, aliases) For example the preferred mime charset "iso-8859-1" is mapped to the Tcl_Encoding named "iso8859-1". If a charset name is not returned via "ns_charsets", it is used literally. So, the charset "utf-8" is mapped the the Tcl_encoding with the same name. The charset mapping can be extended via the configuration file (section "ns/charsets").... so in essence, "ns_charset" just returns entries which require special mappings. When i look at the IANA page, i see several entries there, which are not in the naviserver default table. So, one should check, what's feasible to be added. > The Second problem is: I'm trying to *"ns_return"* XML UTF-8 data from > my RESTFull API responder. > ns_return 200 "application/xml; charset=utf-8" [dict get $response data] > > But firefox complains about "XML Parsing Error: not well-formed" it > will get stuck at portuguese characters, Response header in firefox > dev console shows: "Content-Type > application/xml; charset=utf-8", what I'm doing wrong? Probably, the "data" element of dict "response" contains binary data (a Tcl byte array). I can see nothing wrong in NaviServer, check below for a minimal test setup. all the best -gn ============================================================================================== xml-responder.tcl ns_return 200 "application/xml; charset=utf-8" <root><name>Motörhead</name></root>\n ============================================================================================== Testing: $ curl -k -ihttps://localhost:8443/xml-responder.tcl HTTP/1.1 200 OK Server: NaviServer/4.99.21 Date: Sun, 11 Jul 2021 17:51:50 GMT Content-Type: application/xml; charset=utf-8 Content-Length: 37 Connection: keep-alive X-Content-Type-Options: nosniff X-XSS-Protection: 1; mode=block Referrer-Policy: strict-origin <root><name>Motörhead</name></root> |