La representación o codificación de caracteres para su transmisión y almacenamiento ha sido un reto al que se han enfrentado los ingenieros desde hace casi doscientos años. A lo largo del tiempo se ha ido afrontando en función de las limitaciones técnicas, económicas y políticas de la época.
Con la generalización de las informática gracias a los ordenadores personales y a de las comunicaciones gracias a Internet, la interoperabilidad y la necesidad de dar cabida a más lenguajes y sensibilidades se hizo patente. La creación del consorcio Unicode supuso un paso hacia la solución definitiva.
Los lenguajes de programación tuvieron que adaptarse. En el caso de Python, el soporte Unicode se introdujo en Python 2. Con Python 3 se rehizo la implementación provocando un gran problema de incompatibilidad. En la actualidad, con Python 3 como versión estándar, el binomio Unicode/UTF-8 se ha convertido en el estándar pero aún así, a veces, el infame UnicodeError
vuelve a aparecer.