Как указано в комментариях, OCaml не имеет встроенной поддержки какой-либо конкретной кодировки, поэтому длина равна числу байтов.
Теперь, если вы используете кодировку Utf8 (это самый простой способ смешать ascii и CJK AFAIK), есть несколько способов вычислить этот размер.
В качестве примера, используя очень легковесную библиотеку Uutf [EDIT], как указывал октахрон, это возвращает длину в скалярных значениях, а не в символах, вы должны использовать ответ октахрона.
let utf8_length s = (* returns the number of unicode scalar values *)
let decoder = Uutf.decoder ~encoding:`UTF_8 (`String s) in
let rec loop () = match Uutf.decode decoder with | `End -> () | _ -> loop () in
loop ();
Uutf.decoder_count decoder