【发布时间】:2011-02-10 14:33:32
【问题描述】:
关于this question,我还有一个补充问题。
我发现一首标题中带有“É”的曲目。
我的代码:
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));
}
}
将其转换为以下字节:
195
137
输出为 Ã 后跟一个正方形(这是一个无法以当前字体打印的字符)。
我已将同一个文件导出到 Media Monkey 中的播放列表中,它会将“É”写为“É”——我认为这是正确的(正如 KennyTM 指出的那样)。
我的问题是,如何获得“‰”符号输出?我需要选择不同的字体吗?如果需要,选择哪一种?
更新
人们似乎没有抓住重点。
我可以使用
将“É”写入文件playList.WriteLine("É");
这不是问题。
问题在于 Media Monkey 要求文件格式如下:
#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
所有“high-ascii”(缺少更好的术语)都写成一对字符。
更新 2
我应该将c9 替换为c3 89。
我打算把我实际得到的东西,但在为此进行测试时,我设法得到一个测试程序,以“按原样”正确格式输出文本。所以我需要做更多的调查。
【问题讨论】:
-
‰ 是 在 Windows-1252 中为 137 (0x89)。
-
@KennyTM - 我假设 ‰ 是 137。我想知道如何获得该字符输出。我要改字体吗?
-
这是 É 的正确字节(拉丁文大写字母 E 带尖音 0xc3 89),问题一定出在您的显示代码中 - 这是如何完成的?
-
@Scott - 我知道“É”是“É”的正确字节。问题是我没有正确显示第二个字节,无论是在调试器输出窗口、Media Monkey 还是 Notepad++ 中,其他所有转换都正确完成。
-
@ChrisF:您需要告诉不同的应用程序将文件解码为 UTF-8。