En realidad es mejor, como estrategia general, mantener siempre su texto como Unicode vez que está en la memoria: decodificarlo en el momento en que es de entrada, y codificar exactamente en el momento en que se necesita para la producción, si hay requisitos de codificación específicos en los tiempos de entrada y/o entrada.
Incluso si no elige adoptar esta estrategia general (¡y debería hacerlo!), La única forma de sonido para realizar la tarea que necesita es decodificar, procesar, codificar de nuevo, nunca trabajar en el codificado formas. Es decir .:
mystring = "işğüı"
print mystring.decode('utf-8').upper().encode('utf-8')
asumiendo que está restringido a cadenas codificadas en la asignación y para fines de salida. (La restricción de salida es lamentablemente realista, la restricción de asignación no es - solo haga mystring = u"işğüı"
, por lo que es unicode desde el principio, y aléjese al menos la llamada .decode
! -)
La salida producida por esta respuesta (IŞĞÜI, comenzando con U + 0049 LETRA MAYÚSCULA LETRA I) es diferente de la salida correcta proporcionada por la pregunta (İŞĞÜI, comenzando con U + 0130 LETRA MAYÚSCULA LATINA I CON PUNTO ARRIBA). – thomasd