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

Reply via email to