Truncado Unicode para que se ajuste a un tamaño máximo cuando se codifica para transferencia bancaria

Dada una cadena Unicode y estos requisitos:

La cadena se codificará en algún formato de secuencia de bytes (por ejemplo, UTF-8 o JSON unicode escape)La cadena codificada tiene una longitud máxima.

Por ejemplo, el servicio de inserción de iPhone requiere codificación JSON con un tamaño máximo de paquete total de 256 bytes.

¿Cuál es la mejor manera de truncar la cadena para que se vuelva a codificar a Unicode válido y se muestre de manera razonablemente correcta?

(La comprensión del lenguaje humano no es necesaria: la versión truncada puede parecer extraña, por ejemplo, para un carácter de combinación huérfano o una vocal tailandesa, siempre que el software no se bloquee al manejar los datos).

Ver también:

Pregunta de Java relacionada:¿Cómo trunco ​​una cadena Java para que quepa en un número dado de bytes, una vez codificada en UTF-8?Pregunta de Javascript relacionada:Uso de JavaScript para truncar el texto a un tamaño determinado

Respuestas a la pregunta(5)

Su respuesta a la pregunta