DEV Community

Ukjin Yang
Ukjin Yang

Posted on • Updated on

How to make all textual response as UTF-8 on Jooby

Only 3 steps. (on 2.x or later)

  • Use Decorator.
  • Make handler with set current response type and charset UTF-8.
  • return next.apply(ctx); for next response procedure.
import io.jooby.Jooby;
import io.jooby.MediaType;
import java.nio.charset.StandardCharsets;

public class App extends Jooby {

  {
    // use Decorator.
    decorator(next -> ctx -> {
      // get response content-type.
      final MediaType responseType = ctx.getResponseType();
      // if content-type is text-specific
      if(responseType.isTextual())
      // override response type with current media type and always use UTF-8 charset!
        ctx.setResponseType(responseType, StandardCharsets.UTF_8);
      // pipe next response procedure.
      return next.apply(ctx);
    });

    get("/", ctx -> "Abc가나다漢文");
  }

  public static void main(final String[] args) {
    runApp(args, App::new);
  }
}
Enter fullscreen mode Exit fullscreen mode

Then run jooby application, connect localhost:8080 or your another application host on your browser and see your unicode response.

Simple and easy ♡!

UPDATE:
27 Jul, 2021: getRequestType -> getResponseType

Discussion (0)