Voy a preguntar cuál es probablemente una pregunta bastante controvertida: "Si uno de los más Las codificaciones populares, UTF-16, ¿se consideran dañinas? "
¿Por qué hago esta pregunta?
¿Cuántos programadores son conscientes del hecho de que UTF-16 es en realidad una codificación de longitud variable? Con esto quiero decir que hay puntos de código que, representados como pares sustitutos, toman más de un elemento.
Lo sé; muchas aplicaciones, marcos y API usan UTF-16, como String de Java, String de C #, API de Win32, bibliotecas Qt GUI, la biblioteca ICU Unicode, etc. Sin embargo, con todo eso, hay muchos errores básicos en el procesamiento de caracteres fuera de BMP (caracteres que deben codificarse utilizando dos elementos UTF-16).
Por ejemplo, intenta editar uno de estos caracteres: