我有一个UTF-8编码字符串,我从阅读PDF,我试图去除一些代表空格但不编码为标准0x20空间的字符。我的问题是字符由3字节的UTF-8表示,我无法弄清楚如何将其转换为字符串或字符,以便我可以进行替换。我试图替换的两个UTF-8字符是0xE28087和0xE28088。
我尝试过Chr和ChrW,它只取整数参数65,000(可能是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
我在伪代码中尝试做的只是: ConvertedText = ConvertedText.Replace(StringOrCharofThisUnicodeCharacter(“0xE28087”),“”)
答案 0 :(得分:2)
您正在使用UTF-8编码混合代码点。在内部,所有.NET字符串都使用UTF-16,因此您只需要指定Unicode代码点,不 UTF-8字节数据:
Const FigureSpaceChar As Char = ChrW(&H2007)
来自www.fileformats.info的代码点。