Puff dímelo a mi que básicamente el 95% de software que hago es de criptografía. Por ejemplo convertir a y desde utf-8 usando wide characters en C++ con windows api es un asco...
Te puedes referir a "todo eso" como codificación de caracteres.
Al trabajar con utf8 el tamaño de memoria utilizado para representar cada caracter es mayor que con la codificación estandar. En estos casos por experiencia e varios lenguajes lo mejor es trabajar con la codificación estandar y al final del todo transformar a utf-8. Es lo más sencillo. Puedes trabajar con números directamente que hagan referencia a los caracteres y hacer un mini programa para mostrar esos números en distintas codificaciones. Al final de tu programa simplemente cambias el número y te olvidas de rollos.
Prueba a convertir con esta función:
http://www.w3api.com/wiki/PHP:Mb_convert_case#Lineas_de_C.C3.B3digoEn el caso que de verdad necesites procesar cadenas con carácteres en otros idioma como ruso, japones, etc por poner un ejemplo, entonces sí tendrás que trabajar en muchos casos obligatoriamente con multibyte.
https://www.sitepoint.com/working-with-multibyte-strings/Ahí tienes una explicación básica que puedes extender en la documentación oficial de php.
Wikipedia codificación:
https://es.m.wikipedia.org/wiki/Codificaci%C3%B3n_de_caracteresUn poco de teoría:
https://www.smashingmagazine.com/2012/06/all-about-unicode-utf8-character-sets/Probemas típicos del encoding:
https://flaviocopes.com/javascript-unicode/Ejemplos de otros usos:
https://www.adilbo.com/encoder/ https://www.w3schools.com/jsref/jsref_encodeuri.asp https://blog.malwarebytes.com/cybercrime/2014/01/the-rtlo-method/