11
2015
07

C#字符串编码帮助类

/// <summary>
/// 字符串编码帮助类
/// </summary>
public class EncodingHelper
{
    /// <summary>
    /// 字符串编码转换
    /// </summary>
    /// <param name="srcEncoding">原编码</param>
    /// <param name="dstEncoding">目标编码</param>
    /// <param name="srcStr">原字符串</param>
    /// <returns>字符串</returns>
    internal static string TransferEncoding(Encoding srcEncoding, Encoding dstEncoding, string srcStr)
    {
        byte[] srcBytes = srcEncoding.GetBytes(srcStr);
        byte[] bytes = Encoding.Convert(srcEncoding, dstEncoding, srcBytes);
        return dstEncoding.GetString(bytes);
    }
    /// <summary>
    /// Base64转码
    /// </summary>
    /// <param name="srcStr">原字符串</param>
    /// <returns>字符串</returns>
    internal static string ToBase64(string srcStr)
    {
        byte[] bytes = Encoding.Default.GetBytes(srcStr);
        return Convert.ToBase64String(bytes);
    }
    /// <summary>
    /// Base64字符串解码
    /// </summary>
    /// <param name="srcStr">Base64 字符串</param>
    /// <returns>字符串</returns>
    internal static string ToUnBase64(string srcStr)
    {
        byte[] bytes = Convert.FromBase64String(srcStr);
        return Encoding.Default.GetString(bytes);//Convert.ToBase64String(bytes);
    }
    /// <summary>
    /// 正则匹配并返回网页编码。
    /// </summary>
    /// <param name="html"></param>
    /// <returns></returns>
    internal static Encoding GetHtmlCharSet(string html)
    {
        Encoding encoding;
        string webCharSet = MatchHelper.MatchScalar(html, "charset=[\"]*(\\S+)\"");
        if (webCharSet.Trim() == "")
        {
            webCharSet = MatchHelper.MatchScalar(html, "encoding=\"(\\S+)\"");
        }
        switch (webCharSet.ToLower())
        {
            case "gbk":
            case "gb2312":
                encoding = Encoding.Default; break;
            case "utf8":
            case "utf-8":
                encoding = Encoding.UTF8; break;
            case "unicode":
                encoding = Encoding.Unicode; break;
            case "ascii":
                encoding = Encoding.ASCII; break;
            default: encoding = Encoding.Default; break;
        }
        return encoding;
    }
    /// <summary>
    /// 将字节数组转为字符串
    /// </summary>
    /// <param name="b">字节数组</param>
    /// <param name="Encoding">编码,默认为Default</param>
    /// <returns></returns>
    internal static string ByteToString(byte[] b, Encoding Encoding)
    {
        if (Encoding == null)
        {
            Encoding = Encoding.Default;
        }
        string result = Encoding.GetString(b);
        return result;
    }
    /// <summary>
    /// 将字符串转为字节数组
    /// </summary>
    /// <param name="str">字符串</param>
    /// <param name="Encoding">编码,默认为Default</param>
    /// <returns></returns>
    internal static byte[] StringToByte(string str, Encoding Encoding)
    {
        if (Encoding == null)
        {
            Encoding = Encoding.Default;
        }
        byte[] b = Encoding.GetBytes(str);
        return b;
    }
}


« 上一篇下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。