streamreader不能读取中文
源码如下:
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace TestApplication
{
class Program
{
static void Main()
{
string strLine;
try
{
FileStream kkFile = new FileStream(@"c:\kk.txt", FileMode.Open);
StreamReader kkReader = new StreamReader(kkFile);
strLine = kkReader.ReadLine();
while (strLine != null)
{
Console.WriteLine(strLine);
strLine = kkReader.ReadLine();
}
kkReader.Close();
}
catch(IOException ex)
{
Console.WriteLine(ex.ToString());
return;
}
Console.ReadKey();
}
}
}
kk.txt文件内容如下:
<CABIN>
<HEAD>5170500011||081223000000||粤海508||||11||9||220831.00||6142||10||081225||081224||江海运输(2)||肇庆港(5177)||||||</HEAD>
<ORDER>5170500011||081223000000||粤海508||1||HZQC8C0592||高要怡发金属工业有限公司||珠江中转物流有限公司||香港(110)||肇庆(5177)||肇庆港(51770)||081224||生铁铸件||21||木箱(1)||0||||1||23183.00
<CONTA>5170500011||081223000000||HZQC8C0592||1||WHLU2682045||20GP||WHLN926876</CONTA>
</ORDER>
<ORDER>5170500011||081223000000||粤海508||2||HZQC8C0591||德庆迪爱生合成树脂有限公司||珠江中转物流有限公司||香港(110)||肇庆(5177)||肇庆港(51770)||081224||松香树脂||649||包(6)||0||||1||21295.00
<CONTA>5170500011||081223000000||HZQC8C0591||1||OOLU5795611||40HQ||OOLQ186407</CONTA>
</ORDER>
<ORDER>5170500011||081223000000||粤海508||3||HZQT8C0635||肇庆长信经济贸易有限公司||珠江中转物流有限公司||香港(110)||肇庆(5177)||肇庆港(51770)||081224||未磨肉桂||418||件(9)||0||||1||14596.00
执行源码,读不到中文,请问哪里问题了
------解决方案--------------------
C# code
FileStream kkFile = new FileStream(@"c:\kk.txt", FileMode.Open);
StreamReader kkReader = new StreamReader(kkFile,[color=#FF0000]System.Text.Encoding.Default[/color]);
strLine = kkReader.ReadLine();
while (strLine != null)
{
Console.WriteLine(strLine);
strLine = kkReader.ReadLine();
}
kkReader.Close();
------解决方案--------------------
将kk.txt的编码改成UTF-8即可,本地已经测试。
MSDN:
StreamReader 旨在以一种特定的编码输入字符,而 Stream 类用于字节的输入和输出。使用 StreamReader 读取标准文本文件的各行信息。
除非另外指定,StreamReader 的默认编码为 UTF-8,而不是当前系统的 ANSI 代码页。UTF-8 可以正确处理 Unicode 字符并在操作系统的本地化版本上提供一致的结果。
------解决方案--------------------
或:
StreamReader kkReader = new StreamReader(kkFile, System.Text.Encoding.Default);