Truncando o unicode para que ele se encaixe no tamanho máximo quando codificado para transferência eletrônica

Dada uma string Unicode e estes requisitos:

A string pode ser codificada em algum formato de sequência de bytes (por exemplo, escape unicode UTF-8 ou JSON)A string codificada tem um comprimento máximo

Por exemplo, o serviço push do iPhone requer a codificação JSON com um tamanho total máximo de pacote de 256 bytes.

Qual é a melhor maneira de truncar a string para que ela seja codificada novamente para Unicode válido e que seja exibida corretamente?

(A compreensão da linguagem humana não é necessária - a versão truncada pode parecer estranha, por exemplo, para um caractere de combinação órfão ou uma vogal tailandesa, contanto que o software não trave ao manipular os dados.)

Veja também:

Pergunta Java relacionada:Como eu truncar uma string java para caber em um determinado número de bytes, uma vez codificado em UTF-8?Pergunta de JavaScript relacionada:Usando JavaScript para truncar texto para um determinado tamanho