原因:
1个汉字被转换为utf-8就等于9个英文字 而Header好像最多只能155个英文字 所以中文文件名超过17字就会被截断。
解决办法:把utf8转化为gb2312
源码样例:
/// <summary>
/// 从一种编码到另一种编码
/// </summary>
/// <param name="str">源字符串</param>
/// <param name="From">From</param>
/// <param name="To">To</param>
/// <returns></returns>
private string ConertStr(string str, string From, string To)
{
byte[] bs = System.Text.Encoding.GetEncoding(From).GetBytes(str);
bs = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(From), System.Text.Encoding.GetEncoding(To), bs);
string res = System.Text.Encoding.GetEncoding(To).GetString(bs);
return res;
}
//调用
string a = ConertStr("中国人" ,"utf-8", "gb2312");
1个汉字被转换为utf-8就等于9个英文字 而Header好像最多只能155个英文字 所以中文文件名超过17字就会被截断。
解决办法:把utf8转化为gb2312
源码样例:
/// <summary>
/// 从一种编码到另一种编码
/// </summary>
/// <param name="str">源字符串</param>
/// <param name="From">From</param>
/// <param name="To">To</param>
/// <returns></returns>
private string ConertStr(string str, string From, string To)
{
byte[] bs = System.Text.Encoding.GetEncoding(From).GetBytes(str);
bs = System.Text.Encoding.Convert(System.Text.Encoding.GetEncoding(From), System.Text.Encoding.GetEncoding(To), bs);
string res = System.Text.Encoding.GetEncoding(To).GetString(bs);
return res;
}
//调用
string a = ConertStr("中国人" ,"utf-8", "gb2312");