"É" not getting converted to two bytes correctly.

Posted by ChrisF on Stack Overflow See other posts from Stack Overflow or by ChrisF
Published on 2010-04-21T13:12:16Z Indexed on 2010/04/21 14:13 UTC
Read the original article Hit count: 352

Filed under:
|
|

Further to this question I've got a supplementary problem.

I've found a track with an "É" in the title.

My code:

var playList = new StreamWriter(playlist, false, Encoding.UTF8);

-

private static void WriteUTF8(StreamWriter playList, string output)
{
    byte[] byteArray = Encoding.UTF8.GetBytes(output);
    foreach (byte b in byteArray)
    {
        playList.Write(Convert.ToChar(b));
    }
}

converts this to the following bytes:

195
137

which is being output as à followed by a square (which is an character that can't be printed in the current font).

I've exported the same file to a playlist in Media Monkey at it writes the "É" as "É" - which I'm assuming is correct (as KennyTM pointed out).

My question is, how do I get the "‰" symbol output? Do I need to select a different font and if so which one?

UPDATE

People seem to be missing the point.

I can get the "É" written to the file using

playList.WriteLine("É");

that's not the problem.

The problem is that Media Monkey requires the file to be in the following format:

#EXTINFUTF8:140,Yann Tiersen - Comptine D'Un Autre Été: L'Après Midi
#EXTINF:140,Yann Tiersen - Comptine D'Un Autre Été: L'Après Midi
#UTF8:04-Comptine D'Un Autre Été- L'Après Midi.mp3
04-Comptine D'Un Autre Été- L'Après Midi.mp3

Where all the "high-ascii" (for want of a better term) are written out as a pair of characters.

© Stack Overflow or respective owner

Related posts about c#

Related posts about unicode