One alternative is to use json:encode/2, overriding the encoder, like:
1> L = [ <<"100872">>, <<"STABILO: spécialement conçu pour l'écriture...">>, <<"HB">> ].
[<<"100872">>,
<<"STABILO: spécialement conçu pour l'écriture...">>,
<<"HB">>]
2> Encoder = fun(Value, E) -> case is_binary(Value) of true -> unicode:characters_to_binary(Value, latin1); false -> json:encode_value(Value, E) end end.
#Fun<erl_eval.41.39164016>
3> json:encode(L, Encoder).
[91,<<"100872">>,44,
<<"STABILO: spécialement conçu pour l'écriture..."/utf8>>,
44,<<"HB">>,93]