У меня есть кодировка UTF-8, которую я получаю от чтения PDF-файла, и я пытаюсь символы, которые представляют пробелы, но не кодируются как стандартное пространство 0x20. Моя проблема в том, что символы представлены 3-байтами UTF-8, и я не могу понять, как получить это в строку или символ, чтобы я мог заменить. Два символа UTF-8, которые я пытаюсь заменить, это 0xE28087 и 0xE28088.3 байта UTF-8 Замена строк в .NET (преобразование 3-байтных UTF-8 в String или Char)
Я попытался Chr и ДЖД, которые только принимают целые параметры до 65000 (предположительно элементов, которые могут быть представлены в виде одного байта в UTF-8)
Я также попытался с помощью System.Text.Encoding.UTF8. GetChars() с байтовым представлением моих персонажей, но результат, кажется, 4 символов вместо того, чтобы только один - IE он интерпретирует мой 3 байтовый символ в виде отдельных символов один байт
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
Что я пытаюсь do в псевдокоде просто: ConvertedText = ConvertedText.Replace (StringOrCharofThisUnicodeCharacter ("0xE28087 ")," ")
.NET использует UTF-16, а не UTF-32. (Каждый символ является кодовой точкой UTF-16.) –
Джон: Конечно. Опечатка. Спасибо, что заметили это. –
Отлично работает, спасибо большое. Для других, читающих другое пространство, я пытаюсь заменить ChrW (& H2008) с того же сайта. –