.NET中的3字节UTF-8字符串替换(将3字节UTF-8转换为字符串或字符)

时间:2009-08-10 17:23:24

标签: .net utf-8

我有一个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”),“”)

1 个答案:

答案 0 :(得分:2)

您正在使用UTF-8编码混合代码点。在内部,所有.NET字符串都使用UTF-16,因此您只需要指定Unicode代码点, UTF-8字节数据:

Const FigureSpaceChar As Char = ChrW(&H2007)

来自www.fileformats.info的代码点。