tags:

views:

1746

answers:

2

How can i convert an UTF-8 string into an ISO-8859-1 string?

+2  A: 

.NET Strings are all UTF-16 internally. There is no UTF-8 or ISO-8859-1 encoded System.String in .NET. To get the binary representation of the string in a particular encoding use System.Text.Encoding class:

byte[] bytes = Encoding.GetEncoding("iso-8859-1").GetBytes("hello world");
Mehrdad Afshari
Almost ;) UTF8 string -> bytes -> ISO-88590-1 string
leppie
@leppie: What's a UTF8 or ISO-88590-1 string? Are those anything except a sequence of bytes?
Mehrdad Afshari
+2  A: 

Try:

        System.Text.Encoding iso_8859_1 = System.Text.Encoding.GetEncoding("iso-8859-1");
        System.Text.Encoding utf_8 = System.Text.Encoding.UTF8;

        // Unicode string.
        string s_unicode = "abcéabc";

        // Convert to ISO-8859-1 bytes.
        byte[] isoBytes = iso_8859_1.GetBytes(s_unicode);

        // Convert to UTF-8.
        byte[] utf8Bytes = System.Text.Encoding.Convert(iso_8859_1, utf_8, isoBytes);
John Feminella
Ahh, never knew about the Convert method :)
leppie
Thanks, but how can I output this: Response.Write(isoBytes) does not work?
Tom
byte[] srcBytes = utf_8.GetBytes(srcstr); byte[] tgtBytes = System.Text.Encoding.Convert(utf_8, iso_8859_1, srcBytes); Response.Write(tgtBytes);
Tom