public static string CutLength(string text, int len, bool isPatch) { if (text == null) text = String.Empty; Encoding enc = Encoding.GetEncoding("gb2312"); if (text.Length <= len / 2) return isPatch ? text + RepeatDots(len - enc.GetBytes(text).Length) : text; int bytes = 0, index = 0; if (text.Length > len) { bytes = enc.GetBytes(text.Substring(0, len)).Length; index = len; } else { bytes = enc.GetBytes(text).Length; if (bytes <= len) return isPatch ? text + RepeatDots(len - bytes) : text; index = text.Length; } int cutLen = len - 3; while (bytes > cutLen) bytes -= enc.GetBytes(text.Substring(--index, 1)).Length; return text.Substring(0, index) + RepeatDots(len - bytes); } 前台 <%# BLOperator.CutLength(Eval("Title") as string, 20)%>