Creo que deberías probar con las funciones para cadenas multibyte (AKA
mbstring), más específicamente, tratarlo como cadena y no como arreglo, accediendo a cada caracter con
mb_substr() y, dependiendo de tu configuración de PHP + mbstring, tal vez debas especificar el juego de caracteres o definirlo usando
mb_internal_encoding()