小弟在用C#将SQL查询结果导出到TXT使用Unicode(UTF-16LE)编码方式,导致中文字符全部都变成乱码。请问各位大哥有没有什么办法,注意一定要用Unicode(UTF-16LE)的编码方式。就这么多分了,谢谢大家!!!下面是我的代码。                   if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{       string ConnStr=“”
SqlConnection conn = new SqlConnection();
conn.ConnectionString = ConnStr; 
conn.Open();
SqlDataAdapter sda = new SqlDataAdapter("exec sp_test", conn);
DataSet ds = new DataSet();
sda.Fill(ds); 
int RC = ds.Tables[0].Rows.Count
string[] lz = new string[RC]; for (int j = 0; j < RC; j++)
{
DataRow dr = ds.Tables[0].Rows[j];
for (int i = 0; i < dr.ItemArray.Length; i++)
{
lz[j] += dr.ItemArray[i].ToString().Trim();
lz[j] += "\t"+"\t"+"\t"+"\t";
}
lz[j] += "\n";
}
string filename = saveFileDialog1.FileName;
FileStream fs = new FileStream(filename , FileMode.OpenOrCreate, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("UTF-16LE);
sw.Flush();
sw.BaseStream.Seek(0, SeekOrigin.Begin);
for (int i = 0; i < RC; i++)
{
sw.WriteLine(lz[i]); }
sw.Flush();
sw.Close();
conn.Close();
}

解决方案 »

  1.   

       因为这个文件要导入的系统是采用unicode的编码方式的系统中,所以.....  继续在线等~~
      

  2.   

    笨办法,如果你原来用的是GB2312的话,就用Byte转.不知道用得对不对。你试下?我文件上没加编码格式,如果需要你自己加上string filename = saveFileDialog1.FileName; 
    FileStream fs = new FileStream(filename , FileMode.OpenOrCreate, FileAccess.Write); 
    StreamWriter sw = new StreamWriter(fs); 
    sw.Flush(); 
    sw.BaseStream.Seek(0, SeekOrigin.Begin); 
    byte[] bUTF16;
    byte[] bDefault;
    Encoding unicode = System.Text.Encoding.GetEncoding("UTF-16LE"); 
    for (int i = 0; i < RC; i++) 

      bDefault = System.Text.Encoding.Default.GetBytes(lz[i]); 
      bUTF16 = Encoding.Convert(System.Text.Encoding.Default , unicode, bDefault);
      sw.WriteLine(unicode.GetString(bUTF16));

    sw.Flush(); 
    sw.Close(); 
    conn.Close(); 
      

  3.   

    提示找不到“saveFileDialog1”       还有的代码呢?
      

  4.   

    要自己新增的啊.
      string filename;
                SaveFileDialog saveFileDialog1 = new SaveFileDialog();
                if (DialogResult.OK == saveFileDialog1.ShowDialog())
                {
                    filename = saveFileDialog1.FileName;
                }
                else
                {
                    return;
                } 
     FileStream fs = new FileStream(filename , FileMode.OpenOrCreate, FileAccess.Write);  
     StreamWriter sw = new StreamWriter(fs);  
     sw.Flush();  
     sw.BaseStream.Seek(0, SeekOrigin.Begin);  
     byte[] bUTF16; 
     byte[] bDefault; 
     Encoding unicode = System.Text.Encoding.GetEncoding("UTF-16LE");  
     for (int i = 0; i  < RC; i++)  
     {  
       bDefault = System.Text.Encoding.Default.GetBytes(lz[i]);  
       bUTF16 = Encoding.Convert(System.Text.Encoding.Default , unicode, bDefault); 
       sw.WriteLine(unicode.GetString(bUTF16)); 
     }  
     sw.Flush();  
     sw.Close();  
     conn.Close();  
     }