0 votes

3 remplacement de chaîne UTF-8 en octets dans .NET (Convertir l'UTF-8 de 3 octets en chaîne ou caractère)

Je dispose d'une chaîne encodée en UTF-8 que je récupère de la lecture d'un PDF, et j'essaie de supprimer certains caractères qui représentent des espaces mais ne sont pas encodés comme l'espace standard 0x20. Mon problème est que les caractères sont représentés par 3 octets de UTF-8 et je ne parviens pas à trouver comment les convertir en une chaîne ou un caractère afin de pouvoir les remplacer. Les deux caractères UTF-8 que j'essaie de remplacer sont 0xE28087 et 0xE28088.

J'ai essayé Chr et ChrW qui ne prennent que des paramètres entiers jusqu'à 65 000 (probablement des éléments qui peuvent être représentés dans un seul octet en UTF-8)

J'ai également essayé d'utiliser System.Text.Encoding.UTF8.GetChars() avec la représentation en octets de mes caractères, mais le résultat semble être 4 caractères au lieu d'un seul - c'est-à-dire qu'il interprète mon caractère de 3 octets comme des caractères d'un octet chacun.

    Dim ResultChars() As Char
    Dim bytes() As Byte
    Dim SpaceChar As Int32

    SpaceChar = Integer.Parse("E28087", Globalization.NumberStyles.HexNumber)
    bytes = BitConverter.GetBytes(SpaceChar)
    ResultChars = System.Text.Encoding.UTF8.GetChars(bytes)
    For Each ResultChar In ResultChars
        Debug.WriteLine(ResultChar)
    Next

Ce que j'essaie de faire en pseudocode est simplement : ConvertedText = ConvertedText.Replace(StringOrCharofThisUnicodeCharacter("0xE28087"), " ")

2voto

Konrad Rudolph Points 231505

Vous mélangez des points de code avec un encodage UTF-8. En interne, toutes les chaînes .NET utilisent l'UTF-16, il vous suffit donc de spécifier le point de code Unicode, pas les données en octets UTF-8 :

Const FigureSpaceChar As Char = ChrW(&H2007)

Point de code à partir de www.fileformats.info.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X