首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

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

2012-02-13 
streamreader不能读取中文源码如下:using Systemusing System.Collections.Genericusing System.Textus

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

热点排行