小弟在用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();
}
{ 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();
}
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();
}
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();
}