主题:  为什么用StreamReader读文件是乱码?谢谢

groove

职务:普通成员
等级:1
金币:0.0
发贴:35
#12004/10/27 19:53:14
为什么用StreamReader读文件是乱码?谢谢
那个文件夹里有web.config
用response.writefile读不是乱码。
请帮我看看怎么回事,谢谢!!!!!



蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#22004/10/27 22:01:44
StreamReader是流的输出,需要解码,比如是UTF8编码的文件需要UTF8解码,而中国文件的编码,也需要中国文件的解码。中国文字的编码是GB18030,读时:
StreamReader sr = new StreamReader(pathSource,Encoding.GetEncoding("GB18030"));

Web.config里的编码如果要中文支持,需要设置为GB3212码。


非常大鱼

groove

职务:普通成员
等级:1
金币:0.0
发贴:35
#32004/10/27 22:38:41
请问这句应该加在哪?谢谢
我加了之后不行。。。
Compilation Error
Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: BC30684: 'StreamReader' is a type and cannot be used as an expression.

Source Error:



Line 23: <td width="33%"><font color="#FFFFFF">
Line 24: <%
Line 25: StreamReader("li.txt",Encoding.GetEncoding("GB18030");
Line 26: %>
Line 27: </font></td>

我用的vb语言编写。。。
应该怎样改?谢谢!!!

编辑历史:[此帖最近一次被 groove 编辑过(编辑时间:2004-10-27 22:45:37)]


蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#42004/10/27 23:47:03
文件名要用Server.MapPath("li.txt")

读取方法
StreamReader sr = new StreamReader(pathSource,Encoding.GetEncoding("GB18030"));

while ( sr.Peek() >= 0 )
{
    strLine = sr.ReadLine();
}

另有ReadToEnd、WriteLine、Read等方法;我这方面只做过小程序,请看VS2003联机帮助。

编辑历史:[此帖最近一次被 蓝鲸 编辑过(编辑时间:2004-10-27 23:58:14)]

非常大鱼

groove

职务:普通成员
等级:1
金币:0.0
发贴:35
#52004/10/28 19:48:51
谢谢,使用那个代码用说是什么语言吗?我输入之后什么效果也没有,语句就像普通文字一样出现在网页上。
请问用vb语言怎么用StreamReader显示中文?

编辑历史:[此帖最近一次被 groove 编辑过(编辑时间:2004-10-28 20:11:41)]


蓝鲸

职务:版主
等级:5
金币:42.1
发贴:2614
#62004/10/28 20:36:23
上面代码已写很清楚了,详细的资料参考MSDN帮助,它是最权威的。

VB.Net代码:
Dim sr As StreamReader = New StreamReader(pathSource, Encoding.GetEncoding("GB18030"))

While sr.Peek()>= 0
    strLine = sr.ReadLine
End While


非常大鱼