设为首页收藏本站

Scripts 学盟

 找回密码
 加入学盟

QQ登录

只需一步,快速开始

查看: 6573|回复: 17
打印 上一主题 下一主题

C# 获取文件编码   [复制链接]

Rank: 7Rank: 7Rank: 7

跳转到指定楼层
1#
俊俊 实名认证  发表于 2011-7-27 13:09:07 |只看该作者 |正序浏览
本帖最后由 cjqq0218 于 2011-7-27 13:27 编辑

文件编程中,最难的就是编码问题了
由于篇幅太长,我只将关键的函数列出,代码部分请在本文结尾下载
  1.         internal static int[][] GBFreq = new int[94][];
  2.         internal static int[][] GBKFreq = new int[126][];
  3.         internal static int[][] Big5Freq = new int[94][];
  4.         internal static int[][] EUC_TWFreq = new int[94][];

  5.         internal static string[] nicename = new string[]
  6.    {
  7.     "GB2312", "GBK", "HZ", "Big5", "CNS 11643"
  8.     , "ISO 2022CN", "UTF-8", "Unicode", "ASCII", "OTHER"
  9.    };
复制代码
  1.         /// <summary>
  2.         /// 从指定的 <see cref="Uri"/> 中判断编码类型
  3.         /// </summary>
  4.         /// <param name="testurl">要判断的 <see cref="Uri"/> </param>
  5.         /// <returns>返回编码类型("GB2312", "GBK", "HZ", "Big5", "CNS 11643", "ISO 2022CN", "UTF-8", "Unicode", "ASCII", "OTHER")</returns>
  6.         /// <example>
  7.         /// 以下示例演示了如何调用 <see cref="GetEncodingName"/> 方法:
  8.         /// <code>
  9.         ///  IdentifyEncoding ide = new IdentifyEncoding();
  10.         ///  Response.Write(ide.GetEncodingName(new Uri("http://china5.nikkeibp.co.jp/china/news/com/200307/pr_com200307170131.html")));  
  11.         /// </code>
  12.         /// </example>
  13.         public virtual string GetEncodingName(System.Uri testurl)
  14.         {}
复制代码
  1.          /// <summary>
  2.         /// 从指定的 <see cref="System.IO.FileInfo"/> 中判断编码类型
  3.         /// </summary>
  4.         /// <param name="testfile">要判断的 <see cref="System.IO.FileInfo"/> </param>
  5.         /// <returns>返回编码类型("GB2312", "GBK", "HZ", "Big5", "CNS 11643", "ISO 2022CN", "UTF-8", "Unicode", "ASCII", "OTHER")</returns>
  6.         /// <example>
  7.         /// 以下示例演示了如何调用 <see cref="GetEncodingName"/> 方法:
  8.         /// <code>
  9.         ///  IdentifyEncoding ide = new IdentifyEncoding();
  10.         ///  Response.Write(ide.GetEncodingName(new System.IO.FileInfo(@"C:\test.txt")));  
  11.         /// </code>
  12.         /// </example>
  13.         public virtual string GetEncodingName(System.IO.FileInfo testfile)
  14.         {}
复制代码
  1.         /// <summary>
  2.         /// 从指定的 <see cref="sbyte"/> 字节数组中判断编码类型
  3.         /// </summary>
  4.         /// <param name="rawtext">要判断的 <see cref="System.IO.FileInfo"/> </param>
  5.         /// <returns>返回编码类型("GB2312", "GBK", "HZ", "Big5", "CNS 11643", "ISO 2022CN", "UTF-8", "Unicode", "ASCII", "OTHER")</returns>
  6.         /// <example>
  7.         /// 以下示例演示了如何调用 <see cref="GetEncodingName"/> 方法:
  8.         /// <code>
  9.         ///  IdentifyEncoding ide = new IdentifyEncoding();
  10.         ///  Response.Write(ide.GetEncodingName(IdentifyEncoding.ToSByteArray(System.Text.Encoding.GetEncoding("gb2312").GetBytes("Lion互动网络(www.lionsky.net)"))));
  11.         /// </code>
  12.         /// </example>
  13.         public virtual string GetEncodingName(sbyte[] rawtext)
  14.         {}
复制代码
  1.         /// <summary>
  2.         /// 判断是GB2312编码的可能性
  3.         /// </summary>
  4.         /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  5.         /// <returns>返回 0 至 100 之间的可能性</returns>
  6.         internal virtual int GB2312Probability(sbyte[] rawtext)
  7.         {}
复制代码
  1.         /// <summary>
  2.         /// 判断是GBK编码的可能性
  3.         /// </summary>
  4.         /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  5.         /// <returns>返回 0 至 100 之间的可能性</returns>
  6.         internal virtual int GBKProbability(sbyte[] rawtext)
  7.         {}
复制代码
  1.         /// <summary>
  2.         /// 判断是HZ编码的可能性
  3.         /// </summary>
  4.         /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  5.         /// <returns>返回 0 至 100 之间的可能性</returns>
  6.         internal virtual int HZProbability(sbyte[] rawtext)
  7.         {}
复制代码
  1.         /// <summary>
  2.         /// 判断是BIG5编码的可能性
  3.         /// </summary>
  4.         /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  5.         /// <returns>返回 0 至 100 之间的可能性</returns>
  6.         internal virtual int BIG5Probability(sbyte[] rawtext)
  7.         {}
复制代码
  1.         /// <summary>
  2.         /// 判断是CNS11643(台湾)编码的可能性
  3.         /// </summary>
  4.         /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  5.         /// <returns>返回 0 至 100 之间的可能性</returns>
  6.         internal virtual int ENCTWProbability(sbyte[] rawtext)
  7.         {}
复制代码
  1.         /// <summary>
  2.         /// 判断是ISO2022CN编码的可能性
  3.         /// </summary>
  4.         /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  5.         /// <returns>返回 0 至 100 之间的可能性</returns>
  6.         internal virtual int ISO2022CNProbability(sbyte[] rawtext)
  7.         {}
复制代码
  1.         /// <summary>
  2.         /// 判断是UTF8编码的可能性
  3.         /// </summary>
  4.         /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  5.         /// <returns>返回 0 至 100 之间的可能性</returns>
  6.         internal virtual int UTF8Probability(sbyte[] rawtext)
  7.         {}
复制代码
  1.         /// <summary>
  2.         /// 判断是Unicode编码的可能性
  3.         /// </summary>
  4.         /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  5.         /// <returns>返回 0 至 100 之间的可能性</returns>
  6.         internal virtual int UnicodeProbability(sbyte[] rawtext)
  7.         {}
复制代码
  1.         /// <summary>
  2.         /// 判断是ASCII编码的可能性
  3.         /// </summary>
  4.         /// <param name="rawtext">要判断的 <see cref="sbyte"/> 字节数组</param>
  5.         /// <returns>返回 0 至 100 之间的可能性</returns>
  6.         internal virtual int ASCIIProbability(sbyte[] rawtext)
  7.         {}
复制代码
  1.         /// <summary>
  2.         /// 初始化必要的条件,这里是放字典的~
  3.         /// </summary>
  4.         internal virtual void Initialize_Frequencies()
  5.         {}
复制代码
  1.         /// <summary>从流读取字节序列,并将此流中的位置提升读取的字节数.</summary>
  2.         /// <param name="sourceStream">要读取的流.</param>
  3.         /// <param name="target">字节数组。此方法返回时,该缓冲区包含指定的字符数组,该数组的 start 和 (start + count-1) 之间的值由从当前源中读取的字节替换。</param>
  4.         /// <param name="start">buffer 中的从零开始的字节偏移量,从此处开始存储从当前流中读取的数据。.</param>
  5.         /// <param name="count">要从当前流中最多读取的字节数。</param>
  6.         /// <returns>读入缓冲区中的总字节数。如果当前可用的字节数没有请求的字节数那么多,则总字节数可能小于请求的字节数,或者如果已到达流的末尾,则为零 (0)。</returns>
  7.         /// <exception cref="ArgumentException">start 与 count 的和大于缓冲区长度。</exception>
  8.         /// <exception cref="ArgumentNullException">target 为空引用(Visual Basic 中为 Nothing)。</exception>
  9.         /// <exception cref="ArgumentOutOfRangeException">offset 或 count 为负。</exception>
  10.         /// <exception cref="System.IO.IOException">发生 I/O 错误。</exception>
  11.         /// <exception cref="NotSupportedException">流不支持读取。</exception>
  12.         /// <exception cref="ObjectDisposedException">在流关闭后调用方法。</exception>
  13.         public static int ReadInput(System.IO.Stream sourceStream, ref sbyte[] target, int start, int count)
  14.         {}
复制代码
  1.         /// <summary>从字符系列读取字节序列,并将此字符系列中的位置提升读取的字节数。</summary>
  2.         /// <param name="sourceTextReader">要读取的流。</param>
  3.         /// <param name="target">字节数组。此方法返回时,该缓冲区包含指定的字符数组,该数组的 start 和 (start + count-1) 之间的值由从当前源中读取的字节替换。</param>
  4.         /// <param name="start">buffer 中的从零开始的字节偏移量,从此处开始存储从当前流中读取的数据。.</param>
  5.         /// <param name="count">要从当前流中最多读取的字节数。</param>
  6.         /// <returns>读入缓冲区中的总字节数。如果当前可用的字节数没有请求的字节数那么多,则总字节数可能小于请求的字节数,或者如果已到达流的末尾,则为零 (0)。</returns>
  7.         /// <exception cref="ArgumentException">start 与 count 的和大于缓冲区长度。</exception>
  8.         /// <exception cref="ArgumentNullException">target 为空引用(Visual Basic 中为 Nothing)。</exception>
  9.         /// <exception cref="ArgumentOutOfRangeException">offset 或 count 为负。</exception>
  10.         /// <exception cref="System.IO.IOException">发生 I/O 错误。</exception>
  11.         /// <exception cref="NotSupportedException">流不支持读取。</exception>
  12.         /// <exception cref="ObjectDisposedException">在流关闭后调用方法。</exception>
  13.         public static int ReadInput(System.IO.TextReader sourceTextReader, ref sbyte[] target, int start, int count)
  14.         {}
复制代码
游客,如果您要查看本帖隐藏内容请回复
2

查看全部评分

分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
分享分享0 收藏收藏0

Rank: 1

18#
似水流年 发表于 2014-1-24 21:19:49 |只看该作者
学习中中

使用道具 举报

管理员

超级大菜鸟

Rank: 9Rank: 9Rank: 9

17#
混混@普宁.中国 实名认证  发表于 2013-5-16 11:48:10 |只看该作者
那个谁 发表于 2013-1-22 14:46
一下冒出这么多书童?

编码问题烦恼了很多人

使用道具 举报

Rank: 1

16#
bac2001 发表于 2013-1-31 19:56:13 |只看该作者
支持~~~研究一下~

使用道具 举报

Rank: 1

15#
FlamesTsui 发表于 2013-1-24 21:12:27 |只看该作者
  下载来看看呢

使用道具 举报

Rank: 8Rank: 8

14#
那个谁 发表于 2013-1-22 14:46:04 |只看该作者
一下冒出这么多书童?

使用道具 举报

Rank: 1

13#
span 发表于 2013-1-22 10:42:25 |只看该作者
  正好需要。

使用道具 举报

Rank: 1

12#
金廷 发表于 2012-12-29 12:37:23 |只看该作者
xxxxxx

使用道具 举报

Rank: 1

11#
TourEx程序-许 发表于 2012-12-27 10:25:53 |只看该作者
正是我想要的,谢谢

使用道具 举报

Rank: 1

10#
刀客 发表于 2012-12-20 18:28:33 |只看该作者

使用道具 举报

您需要登录后才可以回帖 登录 | 加入学盟

手机版|Scripts 学盟   |

GMT+8, 2024-6-1 17:27 , Processed in 1.127301 second(s), 17 queries .

Powered by Discuz! X2

© 2001-2011 Comsenz Inc.

回顶部