2009-08-10 21 views
0

UTF-8エンコーディング文字列を使用しています。PDFを読むことから始めています。スペースを表すが標準の0x20スペースとしてエンコードされていない文字。私の問題は、文字が3バイトのUTF-8で表現されているため、文字列や文字に変換する方法を見つけることができないため、置換を行うことができるということです。私が置き換えようとしている2つのUTF-8文字は、0xE28087と0xE28088です。.NETで3バイトのUTF-8文字列置換(3バイトUTF-8を文字列または文字に変換)

私は私もSystem.Text.Encoding.UTF8を使用してみました65,000(UTF-8で単一バイトで表現することができ、おそらくアイテム)

の整数パラメータを取るのChrとChrWを試みました。それは私がしようとしています何

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 

別の1バイト文字としての私の3バイト文字を解釈しているIE - 私の文字のバイト表現でGetCharsは()が、結果は4つの文字の代わりに一つだけのようです擬似コードで行うことは簡単です: ConvertedText = ConvertedText.Replace(StringOrCharofThisUnicodeCharacter( "0xE28087 ")、" ")

答えて

2

コードポイントをUTF-8エンコーディングと混合しています。 www.fileformats.infoから

Const FigureSpaceChar As Char = ChrW(&H2007) 

コードポイント:内部では、すべての.NET文字列はUTF-16は非常にあなただけの、ない UTF-8バイトのデータをUnicodeコードポイントを指定する必要があります。

+0

.NETでは、UTF-32ではなくUTF-16が使用されます。 (各文字はUTF-16コードポイントです。) –

+0

Jon:もちろん。打ち間違え。それを見つけていただきありがとうございます。 –

+0

完全に動作します、ありがとうございます - 私が置き換えようとしている他のスペースを読んでいる人は、同じサイトからChrW(&H2008)です。 –

関連する問題