读书人

streamreader不能读取中文,该如何处理

发布时间: 2012-02-13 17:20:26 作者: rapoo

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);

读书人网 >C#

热点推荐