Thank you Joakim for the extensive answer, however - On Tue, Oct 3, 2023 at 2:23 PM Joakim Erdfelt via jetty-users < [email protected]> wrote:
> Per the javascript RFC, the `text/javascript` mime-type has an optional > `charset` parameter. > The behavior is documented at > https://datatracker.ietf.org/doc/html/rfc9239#name-charset-parameter > > Essentially, if the charset is unspecified, then the encoding is UTF-8. > > > the encoding is unfortunately not set to utf8 (like it is for the served > json files). > > For JSON, the charset parameter is not used. > Per spec, JSON is always UTF-8. > See: https://www.rfc-editor.org/rfc/rfc8259#section-8.1 > > In Jetty, the json encoding is specified as an assumed UTF-8. > See: > https://github.com/eclipse/jetty.project/blob/jetty-10.0.16/jetty-http/src/main/resources/org/eclipse/jetty/http/encoding.properties > This means the `charset` parameter is not produced when generating the > `Content-Type` header, and is ignored when parsing the `Content-Type` > header. > > > Is there a way to enforce that without compiling a custom version of > Jetty? > > You can customize the in-place `MimeTypes` for a context. > > servletContextHandler.getMimeTypes().addMimeMapping("txt", > "text/javascript;charset=UTF-8"); > or > webappContext.getMimeTypes().addMimeMapping("txt", > "text/javascript;charset=UTF-8"); > > or, If you have a WEB-INF/web.xml in your webapp, you can add a > `<mime-mapping>` entry. > > <mime-mapping> > <extension>js</extension> > <mime-type>text/javascript;charset=UTF-8</mime-type> > </mime-mapping> > I have problems that my UTF8 file is displayed wrongly in the browser - https://wordsbyfarber.com/Consts-ru.js The browser displays pairs of junk characters instead of cyrillic letters and from my (limited) experience having ";charset=utf8" in the header would help it. So I have followed your suggestion and have extended the src/main/webapp/WEB-INF/web.xml with: <?xml version="1.0" encoding="UTF-8"?> <web-app metadata-complete="false" version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <servlet> <servlet-name>WordsServlet</servlet-name> <servlet-class>de.afarber.WordsServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>WordsServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <mime-mapping> <extension>js</extension> <mime-type>text/javascript;charset=UTF-8</mime-type> </mime-mapping> </web-app> Unfortunately the URL still returns the headers without "UTF-8" in there: HTTP/1.1 200 OK last-modified: Tue, 03 Oct 2023 09:52:40 GMT content-type: text/javascript accept-ranges: bytes vary: Accept-Encoding content-encoding: gzip server: Jetty(10.0.16) connection: close Best regards Alex
_______________________________________________ jetty-users mailing list [email protected] To unsubscribe from this list, visit https://www.eclipse.org/mailman/listinfo/jetty-users
