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