各位 我把datagridview里面的数据遍历 输出到txt 的时候 发现输出来的数据对不整齐 网上又找了些资料看了看 发现用PadRight()方法可以,但是又遇见个问题:
汉字占得应该是2个字符 但是输出来的时候按照一个汉字一个字符的输出的,这样用PadRight() 假设输出20个字符 不够的用空白补 应该是这样的吧:
xx.PadRight(20)  但是输出的还是对不整齐 ,原因我也知道了,主要是汉字本来占两个字符的 不知道怎么的 Pad的时候算一个字符 这样 就会错乱我把代码发下 大家帮我看下!谢谢了!我该怎么解决这个问题啊?    string strLine = "";
            for (int i = 0; i < dataGridView1.Rows.Count; i++)
            {
                string id = dataGridView1.Rows[i].Cells[0].Value.ToString();
                string name = dataGridView1.Rows[i].Cells[1].Value.ToString();
                string sex = dataGridView1.Rows[i].Cells[2].Value.ToString();
                string department = dataGridView1.Rows[i].Cells[3].Value.ToString();
                             strLine += id.PadRight(20);
                strLine += name.PadRight(20);
                strLine += sex.PadRight(20);
                strLine += department.PadRight(20);
              
                sw.WriteLine(strLine);//循环读取datagridview单元格内容 写进文件
                strLine = "";
            }

解决方案 »

  1.   

     应该要设置一下 sw.Encoding = Encoding.Unicode;
      

  2.   

    public string PadRight(string str,int len)

                Encoding encoding = Encoding.UTF8;
                int tmp = encoding.GetByteCount(str);
                for(int i = 0;i<len - tmp;i++)
                {
                   str += " ";
                }
              return str;
    }
      

  3.   

     字符编码问题有GB2312 UTF8,中文建议最好用GB2312
     例如代码块:StreamWriter sw;
                try
                {
                    if (File.Exists(myPath))
                    {
                        sw = new StreamWriter(myPath, true, Encoding.GetEncoding("GB2312"));                    sw.WriteLine(myData);                }
                    else
                    {
                       sw= File.CreateText(myPath);
                    }                sw.Close();                sw.Dispose();
                }
                catch(Exception ex)
                {
                    sw = null;               MessageBox.Show("异常:"+ex.Message);
                }