另一個問題重新。 Unicode,終端,現在C#和wc
。如果我寫這個簡單的代碼TextWriter.ReadToEnd與Unix wc命令
int i=0;
foreach(char c in Console.In.ReadToEnd())
{
if(c!='\n') i++;
}
Console.WriteLine("{0}", i);
並將其輸入只有字符「€」(3個字節以UTF-8),wc
返回3個字符(可能使用所述wint_t,雖然我還沒有檢查),但ReadToEnd()
返回1(一個字符)。在這種情況下,ReadToEnd
的行爲究竟是什麼?我怎麼知道ReadToEnd
在幕後做了些什麼?
我正在運行xterm,使用utf-8.en.US進行初始化,運行Ubuntu Linux和Mono。
謝謝。
所以,快速跟進問題。如果我要用C編寫相同的程序,通過使用wchar或wint_t,我會浪費(兩次)空間。在這種情況下,它是微不足道的,因爲它只是16位,但在巨大的文件中,差異是顯而易見的。它是否正確? – 2009-07-23 03:08:06