Código para realizar la conversión de UTF16 a UTF8

El siguiente es un código de muestra para convertir UTF16 a UTF8, utilizando el lenguaje de programación Python:

 

```pitón

def utf16_to_utf8(utf16_str):

    utf8_str = ""

    yo = 0

    mientras yo <len(utf16_str):

        # Obtener la codificación UTF16 del carácter actual

        código_unicode = ord(utf16_str[i])

        

        # Manejar la situación del proxy principal y del proxy final

        si 0xD800 <= unicode_code <= 0xDBFF y i + 1 < len(utf16_str):

            código_par_sustituto = ord(utf16_str[i+1])

            si 0xDC00 <= código_par_sustituto <= 0xDFFF:

                código_unicode = ((código_unicode - 0xD800) << 10) + (código_par_sustituto - 0xDC00) + 0x10000

                yo += 1

        

        # Convertir codificación Unicode a codificación UTF8

        si código_unicode < 0x80:

            utf8_str += chr(código_unicode)

        elif código_unicode < 0x800:

            utf8_str += chr((código_unicode >> 6) | 0xC0)

            utf8_str += chr((código_unicode y 0x3F) | 0x80)

        elif código_unicode < 0x10000:

            utf8_str += chr((código_unicode >> 12) | 0xE0)

            utf8_str += chr(((código_unicode >> 6) & 0x3F) | 0x80)

            utf8_str += chr((código_unicode y 0x3F) | 0x80)

        demás:

            utf8_str += chr((código_unicode >> 18) | 0xF0)

            utf8_str += chr(((código_unicode >> 12) & 0x3F) | 0x80)

            utf8_str += chr(((código_unicode >> 6) & 0x3F) | 0x80)

            utf8_str += chr((código_unicode y 0x3F) | 0x80)

        

        yo += 1

    

    devolver utf8_str

 

 

# Código de prueba

utf16_str = "¡Hola mundo!" # cadena codificada en UTF16

utf8_cadena = utf16_to_utf8(utf16_cadena)

print("cadena codificada en UTF8: ", utf8_str)

```

 

El código primero convierte la cadena UTF16 carácter por carácter en un valor entero codificado Unicode y luego utiliza la codificación Unicode para calcular la codificación UTF8 correspondiente. Los detalles detallados del algoritmo se indican en los comentarios del código. Después de ejecutar el código, se generará la cadena codificada en UTF8 convertida.

 

Nota: Este código supone que la cadena UTF16 de entrada es legal y no contiene una BOM (marca de orden de bytes).

Supongo que te gusta

Origin blog.csdn.net/ls1300005/article/details/131610340
Recomendado
Clasificación