| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2642 人关注过本帖
标题:如何将流中的数据转换成中文汉字??
只看楼主 加入收藏
athenalux
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河北石家庄
等 级:小飞侠
威 望:8
帖 子:975
专家分:2514
注 册:2008-11-26
结帖率:100%
收藏
 问题点数:0 回复次数:9 
如何将流中的数据转换成中文汉字??
最近本人写了一个读取网络流,并保存为一个文本的文件,如下:
功能就是输入一个网址,它将把其首页保存为一个文本文件。比方说输入了www.,就会保存为一个www.的文件。我发现保存后的文件里面中文显示不正常,是一些乱码,请高手告诉我如何正确地显示中文!!

using System;
using System.Text;
using
using
using

class app
{
static void networkstreamtest()
{
string server;
Console.WriteLine("please enter a valid URL...");
server=Console.ReadLine();
IPAddress[] hostadds;
try
{
hostadds=Dns.GetHostEntry(server).AddressList;
}
catch(Exception e)
{
Console.WriteLine(e.Message);
return;
}


Console.WriteLine(server+" ip list is:");
for(int i=0;i<hostadds.Length;i++)
{
Console.WriteLine(hostadds[i].ToString());
}
Console.WriteLine("press enter to continue...");
Console.ReadLine();
IPEndPoint ephost=new IPEndPoint(hostadds[0],80);
Socket s=new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
s.Connect(ephost);
if (!s.Connected)
{
Console.WriteLine("unable to connect.");
return;
}
string str="GET / HTTP/1.1\r\nHost:"+server+"\r\nConnection: Close\r\n\r\n";
Byte[] request=Encoding.ASCII.GetBytes(str);
NetworkStream nstream=new NetworkStream(s,FileAccess.ReadWrite);
nstream.Write(request,0,request.Length);
int nextbyte;
Stream sf;
sf=new FileStream(server+".html.txt",FileMode.Create);
StreamWriter sw;
sw=new StreamWriter(sf);
while((nextbyte=nstream.ReadByte())!=-1)
{
sw.Write((char)nextbyte);
}
sw.Close();
Console.WriteLine("File"+server+".html.txt"+"is saved!");

}
public static void Main()
{
networkstreamtest();
}
}
搜索更多相关主题的帖子: 汉字 中文 数据 
2008-12-11 08:33
梦心
Rank: 4
来 自:福建平和
等 级:贵宾
威 望:13
帖 子:1910
专家分:0
注 册:2007-5-11
收藏
得分:0 
StreamWriter 这个类的重载构造函数里面有提供写入的时候的编码~~~
你把这个编码设置为UTF8就可以了~~~~

我清高和我骄傲的倔强,在风中大声的唱:我不听,我不听~~做我自己最特别,呼呼~~啦啦~~~
我的博客园地址: [url]http://[/url]
2008-12-11 08:38
athenalux
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河北石家庄
等 级:小飞侠
威 望:8
帖 子:975
专家分:2514
注 册:2008-11-26
收藏
得分:0 
我是新手啊,不太明白,梦心,请帮我改下程序吧

QQ:81704464
2008-12-11 08:48
梦心
Rank: 4
来 自:福建平和
等 级:贵宾
威 望:13
帖 子:1910
专家分:0
注 册:2007-5-11
收藏
得分:0 
StreamWriter sw;
sw=new StreamWriter(sf);
改为:
StreamWriter sw = new StreamWriter(sf,Encoding.UTF8);

能不能保证去除乱码成功我不敢确定。。。。乱码也可能其它原因造成~~~

我清高和我骄傲的倔强,在风中大声的唱:我不听,我不听~~做我自己最特别,呼呼~~啦啦~~~
我的博客园地址: [url]http://[/url]
2008-12-11 09:12
athenalux
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河北石家庄
等 级:小飞侠
威 望:8
帖 子:975
专家分:2514
注 册:2008-11-26
收藏
得分:0 
果然不行啊,可能真是别的原因造成的,不过还是多谢了~~~

QQ:81704464
2008-12-11 09:30
梦心
Rank: 4
来 自:福建平和
等 级:贵宾
威 望:13
帖 子:1910
专家分:0
注 册:2007-5-11
收藏
得分:0 
Byte[] request=Encoding.ASCII.GetBytes(str);
改为:
Byte[] request=Encoding.UTF8.GetBytes(str);

晕倒,没注意看到这个~~~~~
你改这个试试~~~还不行那我真没辙了.......

我清高和我骄傲的倔强,在风中大声的唱:我不听,我不听~~做我自己最特别,呼呼~~啦啦~~~
我的博客园地址: [url]http://[/url]
2008-12-11 09:43
athenalux
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河北石家庄
等 级:小飞侠
威 望:8
帖 子:975
专家分:2514
注 册:2008-11-26
收藏
得分:0 
呵呵,还是不行,我个人觉得应该是这一句的事:sw.Write((char)nextbyte);如何把nextbyte这个变量转换为UTF8编码呢?而不是简单转换为char

QQ:81704464
2008-12-11 12:20
zllkiller
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-11-30
收藏
得分:0 
中文用gb2312。。。

                StreamReader du = new StreamReader(read, Encoding.GetEncoding("gb2312"));
                StreamWriter xie = new StreamWriter(writer, Encoding.GetEncoding("gb2312"));
2008-12-12 09:27
athenalux
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河北石家庄
等 级:小飞侠
威 望:8
帖 子:975
专家分:2514
注 册:2008-11-26
收藏
得分:0 
好像不行啊,楼上的,你试过吗

QQ:81704464
2008-12-15 13:30
zllkiller
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2008-11-30
收藏
得分:0 
直接读不行?那就只有读进来以后再转换了

        public string ISO8859_GB2312(string read)
        {
            //声明字符集   
            System.Text.Encoding utf-8, gb2312;
            //utf-8
            utf-8 = System.Text.Encoding.GetEncoding("utf-8");
            //国标2312   
            gb2312 = System.Text.Encoding.GetEncoding("gb2312");
            byte[] iso;
            iso = utf-8.GetBytes(read);
            //返回转换后的字符   
            return gb2312.GetString(iso);
        }
2008-12-15 16:49
快速回复:如何将流中的数据转换成中文汉字??
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018373 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved