The following code, instead of working as expected, replaces the characters in lookup with question marks, so that, for instance, the string
"l'élection" becomes "L'?lection". Note that the acute accent e is represented by the character code 233 in the string. If I substitute normal alphabetic characters in the ChangeTo array (e.g. values such as 88 for "X" instead of 130) it converts to them OK. Can you tell me what is wrong here?

Code:
    Public Function UnFixAccents(ByVal p1 As String) As String
        Static ChangeTo() As Byte = {130, 133, 138, 136, 131, 135, 137, 132, 134, 129, 139, 140, 150, 151, 154, 156, 147}
        Static Lookup() As Byte = {233, 224, 232, 234, 226, 231, 235, 228, 229, 252, 239, 238, 251, 249, 220, 163, 244}
        Dim temp As New StringBuilder(p1)
        Dim c As Char
        For i As Integer = 0 To Lookup.Count - 1
            c = ChrW(Lookup(i))
            temp.Replace(ChrW(Lookup(i)), ChrW(ChangeTo(i)))
        Next
        Return temp.ToString
    End Function