2009-08-10 2 views
0

PDF를 읽는 중 UTF-8 인코딩 문자열이 있는데 일부를 제거하려고합니다. 공백을 나타내지 만 표준 0x20 공간으로 인코딩되지 않은 문자. 내 문제는 문자가 3 바이트의 UTF-8로 표현된다는 것인데,이를 대체 할 수 있도록 문자열이나 문자로 가져 오는 방법을 알 수 없다. 대체하려고하는 두 UTF-8 문자는 0xE28087 및 0xE28088입니다..NET에서 3 바이트 UTF-8 문자열 대체 (3 바이트 UTF-8을 문자열 또는 문자로 변환)

I I에서만도 System.Text.Encoding.UTF8 사용하여 시도 65,000 (UTF-8에서 단일 바이트로 표현 될 수 아마도 항목)

에 정수 파라미터를 차지 대하 및 CHRW 시도했다. 내 캐릭터의 바이트 표현하지만, 결과에 GetChars()는 4 개 문자 대신 한 것 같다 - IE는 내가하려고 어떤 별도의 1 바이트 문자

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 

으로 제 3 바이트 문자를 해석한다 의사 코드에서 수행하는 작업은 간단합니다. ConvertedText = ConvertedText.Replace (StringOrCharofThisUnicodeCharacter ("0xE28087 ")," ")

답변

2

코드 포인트를 UTF-8 인코딩과 혼합합니다. www.fileformats.info에서

Const FigureSpaceChar As Char = ChrW(&H2007) 

코드 포인트 : 내부적으로 모든 .NET 문자열은 UTF-16은 그래서 당신은 그냥 하지 UTF-8 바이트의 데이터를 유니 코드 코드 포인트를 지정해야 사용할 수 있습니다.

+0

.NET은 UTF-32가 아닌 UTF-16을 사용합니다. (각 문자는 UTF-16 코드 포인트입니다.) –

+0

Jon : 물론. 오식. 그것을 발견해 주셔서 감사합니다. –

+0

완벽하게 작동합니다. 대단히 감사합니다. 다른 사이트를 읽으려는 다른 사이트는 ChrW (& H2008)와 같은 사이트에서 교체하려고합니다. –

관련 문제