When you call
HttpContext.Current.Response.Write(someString)
the input someString
will be in .NET's internal string representation (actually UTF-16). To actually send the output this has to be converted. By default this conversion will be to UTF-8 (because it efficiently supports the whole of Unicode).
The Charset
property simply sets the HTTP response headers. But not there is also a ContentEncoding
property to actually control how strings are sent.
So you are missing
HttpContext.Current.Response.ContentEncoding = Encoding.GetEncoding("Windows-1252")
See the description of System.Text.Encoding
for a list of supported encodings.