| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3790 人关注过本帖
标题:[求助]为什么用StreamWriter写文件后是乱码
只看楼主 加入收藏
zzw5980_cn
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2006-7-24
收藏
 问题点数:0 回复次数:14 
[求助]为什么用StreamWriter写文件后是乱码

日文操作系统,在写文件之前对写入的内容进行过文字码转换。debug时,写之前的值还跟原来的一样,但是写道文件之后,打开文件就是乱码。不知道为什么,请教大家!谢谢!
下面是我的代码:
private const string path = "c:\aa.txt";
private void append(string m_str,string code)
{
System.Text.Encoding enc;
if(code.ToLower() == C_SHIFT_JIS)
{
enc = System.Text.Encoding.GetEncoding("shift_jis");
}
else if (code.ToLower() == C_UTF_8)
{
enc = System.Text.Encoding.GetEncoding("utf-8");
}
else
{
enc = System.Text.Encoding.GetEncoding(C_UNICODE);
}

string change_str;
change_str = enc.GetString(System.Text.Encoding.Default.GetBytes(m_str));

try
{
StreamWriter sw = File.AppendText(path);
sw.WriteLine(change_str);
sw.Flush();
sw.Close();
}
catch(System.Exception e)
{
Console.WriteLine(e.Message);
}
}

搜索更多相关主题的帖子: StreamWriter 乱码 文件 
2006-07-26 08:54
marer
Rank: 2
等 级:新手上路
威 望:3
帖 子:928
专家分:0
注 册:2005-7-18
收藏
得分:0 
StreamWriter w=new StreamWriter("aa.txt",false,System.Text.Encoding.Default);

public class 人生历程 extends Thread{public void run(){while(true){努力,努力,再努力!!;Thread.sleep(0);}}}
2006-07-26 09:51
zzw5980_cn
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2006-7-24
收藏
得分:0 
乱码解决了,不知文字码是不是按自己定义的

我把它改成这样了,好用了。
private const string path = "c:\aa.txt"
private void append(string m_str,string code)
{
System.Text.Encoding enc;
if(code.ToLower() == C_SHIFT_JIS)
{
enc = System.Text.Encoding.GetEncoding("shift_jis");
}
else if (code.ToLower() == C_UTF_8)
{
enc = System.Text.Encoding.GetEncoding("utf-8");
}
else
{
enc = System.Text.Encoding.GetEncoding(C_UNICODE);
}

string change_str;
byte[] aa;
//change_str = enc.GetString(System.Text.Encoding.Default.GetBytes(m_str));
aa = System.Text.Encoding.Convert(System.Text.Encoding.Default,enc,
System.Text.Encoding.Default.GetBytes(m_str));
change_str = enc.GetString(aa);

try
{

//StreamWriter sw = File.AppendText(path);
StreamWriter sw = new StreamWriter(path,true,System.Text.Encoding.Default);
sw.WriteLine(change_str);
sw.Flush();
sw.Close();
}
catch(System.Exception e)
{
Console.WriteLine(e.Message);
}
}

但是写到文件之后,内容的文字码是不是跟我传进来的code一样??还是跟系统默认的一致呢?

2006-07-26 10:56
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
你寫入的是系統的編碼

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-07-26 10:58
zzw5980_cn
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2006-7-24
收藏
得分:0 

那有没有可以按照自己定义的文字码写入文件中的方法啊?

2006-07-26 11:11
chenjin145
Rank: 1
等 级:禁止访问
帖 子:3922
专家分:0
注 册:2006-7-12
收藏
得分:0 
StreamWriter sw = new StreamWriter(path,true,System.Text.Encoding.Default);
(這裡指定你要以甚麼編碼寫入)

[url=javascript:alert(1);] [div]fdgfdgfdg\" on\"[/div] [/url]
2006-07-26 11:17
zzw5980_cn
Rank: 1
等 级:新手上路
帖 子:34
专家分:0
注 册:2006-7-24
收藏
得分:0 

谢谢楼上,System.Text.Encoding里面好像没有shift_jis这种类型?是这样吗?

2006-07-26 12:21
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 

iso-2022-jp


此号自封于2006年11月30日
2006-07-26 12:29
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
http://www.yesky.com/imagesnew/software/css/css2/z_charset.html
一般.net支持所有字符编码的
包括EUC SJIS JIS等等
多试试
多找找吧

此号自封于2006年11月30日
2006-07-26 12:31
noshow
Rank: 2
等 级:新手上路
威 望:4
帖 子:1127
专家分:0
注 册:2006-4-21
收藏
得分:0 
另外楼主犯了一个不可原谅的错误
如果WINDOWS不支持Shift_JIS
那么就没有日文WINDOWS操作系统
因为日文原来是JIS编码 当然现在也是JIS为主流
后来WINDOWS觉得JIS编码太差
操作转换起来不定
所以WINDOWS发明了S_JIS
就是JIS的改良版
说错了表怪偶
偶也是从网上资料得知

此号自封于2006年11月30日
2006-07-26 12:41
快速回复:[求助]为什么用StreamWriter写文件后是乱码
数据加载中...
 
   



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

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