编码问题,UTF-8和GBK

踏平扶桑 2010-08-21 11:57:39
最近用httpcws的分词系统(http://blog.s135.com/httpcws_v100/)架设了一个站(PHP的)
然后我在.net下 用HttpWebRequest访问 然后取得返回值,无奈项目是UTF8的编码,而httpcws是GBK的编码,导致返回一直是乱码,大家有没有什么解决方法?谢谢。贴下代码

#region 获取关键字
[AjaxPro.AjaxMethod]
public string GetWords(string str)
{
string _value = string.Empty;
//byte[] gbkBuf = Encoding.GetEncoding("GBK").GetBytes(str);
//_value = Encoding.GetEncoding("GBK").GetString(gbkBuf);

string uri = "http://fenci.xxxxxxx.cn:1985/?w="+Server.UrlEncode(str);
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri);
req.Method = "GET";
req.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; TencentTraveler 4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)";
HttpWebResponse res = req.GetResponse() as HttpWebResponse;
Stream ReceiveStream = res.GetResponseStream();
StreamReader sr = new StreamReader(ReceiveStream, Encoding.Default);
_value = Server.UrlDecode(sr.ReadToEnd());//乱码

//byte[] gbkBuf = Encoding.GetEncoding("GB18030").GetBytes(_value);
//byte[] utf8Buf = Encoding.Convert(Encoding.GetEncoding("GB18030"), Encoding.UTF8, gbkBuf);
//string str1 = Encoding.UTF8.GetString(utf8Buf);

sr.Close();
ReceiveStream.Close();
res.Close();
return _value;
}
#endregion
...全文
137 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
踏平扶桑 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 winner2050 的回复:]
用gbk 读取httpcws 就可以了。

分词引擎用gbk编码的,作者真够可以的。
[/Quote]

还麻烦您能详细的说一下啊,怎么用GBK去读呢?谢谢啊。
porschev 2010-08-23
  • 打赏
  • 举报
回复
winner2050 2010-08-23
  • 打赏
  • 举报
回复
用gbk 读取httpcws 就可以了。

分词引擎用gbk编码的,作者真够可以的。
踏平扶桑 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 maco_wang 的回复:]
编码格式最好统一,否则很容易无乱。

httpcws的分词只支持GBK,你把项目统一成GBK,试一下。
[/Quote]
要是能改项目编码就好了 呵呵~~~
项目一开始就是按UTF-8走的,只是想用httpcws这个替换掉Lucene.Net。结果遇到了这个问题。
踏平扶桑 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 dobzhansky 的回复:]
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();

Console.WriteLine("The encoding……
[/Quote]
谢谢。帮我打开了思路,问题不在这,而是在构造访问rul那。再次感谢!
Dobzhansky 2010-08-23
  • 打赏
  • 举报
回复
HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();

Console.WriteLine("The encoding method used is: " + myHttpWebResponse.ContentEncoding);
Console.WriteLine("The character set used is :" + myHttpWebResponse.CharacterSet);
踏平扶桑 2010-08-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 dobzhansky 的回复:]
response 类上有编码的, 你不用
[/Quote]

麻烦指点一下。我找不到。或者您在详细说一下。谢谢。
Dobzhansky 2010-08-23
  • 打赏
  • 举报
回复
response 类上有编码的, 你不用
叶子 2010-08-21
  • 打赏
  • 举报
回复
编码格式最好统一,否则很容易无乱。

httpcws的分词只支持GBK,你把项目统一成GBK,试一下。

honghu3000 2010-08-21
  • 打赏
  • 举报
回复
Encoding.Default);
改成 Encoding.UTF8

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧