c# 如何生成utf8格式的文件,这段代码有什么问题,达人给指点下吧

nancy55088 2010-02-02 02:54:53
public void createuf8()
{
//
string path = @"D:\MUTRAN\SC\s20100126184127MU5312.snd";
// Delete the file if it exists.
if (File.Exists(path))
{
File.Delete(path);
}
//Create the file.

using (FileStream fs = new FileStream(path, FileMode.Create))
{
String unicodeString = "B-3333#MU9999#YYYY-MM-DD 1 ";
Byte[] data = new UTF8Encoding().GetBytes(unicodeString);
fs.Write(data, 0, data.Length);
}

}
...全文
201 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lzsh0622 2010-02-02
  • 打赏
  • 举报
回复
楼主这种写法,没有指明编码,使用的是系统默认编码 ANSI 这样写到文件中27字节.

用StreamWriter 指明编码 Encoding.UTF8 ,这样写到文件中的是30个字节.

多出的三个字节是UTF8文件头 EF BB BF 。

可以用代码读出文本文件的前三个字节进行验证。或直接用二进制文件编辑软件打开查看。
xu56180825 2010-02-02
  • 打赏
  • 举报
回复
比如:你保存个文件名为AA.SS系統会根据后缀名来以某种解码方式打开这个文件,但保存在硬盘中的是字节.你可以用FILESTREAM来读取某个文件,然后BitConverter.ToString()看看这个文件的字节
nancy55088 2010-02-02
  • 打赏
  • 举报
回复
String unicodeString = "B-3333#MU9999#YYYY-MM-DD 1 ";

StreamWriter FileWriter = new StreamWriter(path, false, Encoding.UTF8);
FileWriter.Write(unicodeString);
FileWriter.Flush();
jasper 2010-02-02
  • 打赏
  • 举报
回复
没看出来
xu56180825 2010-02-02
  • 打赏
  • 举报
回复
这个只是是编码方式,不能保存为什么编码方式的文件,电脑中的文件只能一二进制保存。就是以字节保存,然后调用某个编码方式解码。
nancy55088 2010-02-02
  • 打赏
  • 举报
回复
此方法保存的文件发现是竟然是gb2312的
cuike519 2010-02-02
  • 打赏
  • 举报
回复
这样就可以了啊?有什么问题么?
xu56180825 2010-02-02
  • 打赏
  • 举报
回复
FILESTREAM都是以字节形式写入文件的,UTF只是种编码,解码方式,
mohugomohu 2010-02-02
  • 打赏
  • 举报
回复
用StreamWriter可以指定编码
huminghua 2010-02-02
  • 打赏
  • 举报
回复
你没有SaveAs
zagj11 2010-02-02
  • 打赏
  • 举报
回复
帮你顶。。

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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