文件编码

2年前 (2022) 程序员胖胖胖虎阿
346 0 0

前言:
      记得前不久,我在公司封闭式开发的日子里,我在宿舍的机子,被同学弄得满身病毒,其中之一是病毒在所有的html里者插入了一段iframe
      之后我一不小心..编了段小程序来替换掉所有的iframe,当时忘了文件编码问题..
      现在打开才发现一大堆乱码在里面

现在发现了..当然是要解决了:
简单看了一下文件流读出来的字节.做了简单的文件类型编码判断
代码如下:

 1文件编码 /// <summary>
 2文件编码        /// 获得文件编码
 3文件编码        /// </summary>
 4文件编码        /// <param name="content">文件流的字节数组</param>
 5文件编码        /// <returns>字符编码</returns>

 6文件编码        public static Encoding GetFileEncoding(byte[] content)
 7文件编码        {
 8文件编码            if (content.Length > 0)
 9文件编码            {
10文件编码                switch (content[0])
11文件编码                {
12文件编码                    case 104:
13文件编码                        return Encoding.Default;
14文件编码                    case 255:
15文件编码                        return Encoding.Unicode;
16文件编码                    case 254:
17文件编码                        return Encoding.BigEndianUnicode;
18文件编码                    case 239:
19文件编码                        return Encoding.UTF8;
20文件编码                    default:
21文件编码                        return Encoding.Default;
22文件编码                }

23文件编码            }

24文件编码            return Encoding.Default;
25文件编码        }

这里只简单做了一下.有更复杂,自己扩展去吧!

反正代码都写到了..再给出两段文件的读和写吧

文件编码 /// <summary>
文件编码        
/// 读文件流
文件编码        
/// </summary>
文件编码        
/// <param name="stream">文件流;如:File.OpenRead(fileCurrentPath)</param>
文件编码        
/// <param name="encoding">字符编码;如:Encoding.UTF8</param>
文件编码        
/// <returns>流字符串</returns>

文件编码        public static string ReadFromStream(FileStream stream, Encoding encoding)
文件编码        
{
文件编码            
byte[] content = new byte[stream.Length];
文件编码            stream.Read(content, 
0, content.Length);
文件编码            stream.Close();
文件编码            stream 
= null;
文件编码            
if (encoding == Encoding.Default)
文件编码            
{
文件编码                encoding 
= GetFileEncoding(content);
文件编码            }

文件编码            
return encoding.GetString(content);
文件编码        }

文件编码       
文件编码        
public static string ReadFromStream(FileStream stream,out Encoding encoding)
文件编码        
{
文件编码            
byte[] content = new byte[stream.Length];
文件编码            stream.Read(content, 
0, content.Length);
文件编码            stream.Close();
文件编码            stream 
= null;
文件编码            encoding 
= GetFileEncoding(content);
文件编码            
return encoding.GetString(content);
文件编码        }
 1文件编码   /// <summary>
 2文件编码        /// 写文件流
 3文件编码        /// </summary>
 4文件编码        /// <param name="stream">文件流;如:File.OpenWrite(fileCurrentPath)</param>
 5文件编码        /// <param name="encoding">字符编码;如:Encoding.UTF8</param>
 6文件编码        /// <param name="Text">要写的字符串</param>
 7文件编码        /// <returns>bool</returns>

 8文件编码        public static bool WriteToStream(FileStream stream, Encoding encoding, string Text)
 9文件编码        {
10文件编码            try
11文件编码            {
12文件编码
13文件编码                byte[] content = encoding.GetBytes(Text.Replace("\n""\r\n"));
14文件编码                stream.SetLength(content.Length);
15文件编码                stream.Write(content, 0, content.Length);
16文件编码                stream.Close();
17文件编码                return true;
18文件编码            }

19文件编码            catch
20文件编码            {
21文件编码                return false;
22文件编码            }

23文件编码        }

以上代码没有版权,想用拿去用,想改拿去改!

版权声明:程序员胖胖胖虎阿 发表于 2022年9月4日 下午9:08。
转载请注明:文件编码 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...