SQL查询结果导出TXT的问题(有关编码方式的问题 急!!)
小弟在用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();
}
--------------------编程问答-------------------- up --------------------编程问答-------------------- 为什么要用这种方式,用gb2312不行吗? --------------------编程问答-------------------- 因为这个文件要导入的系统是采用unicode的编码方式的系统中,所以..... 继续在线等~~
--------------------编程问答-------------------- 笨办法,如果你原来用的是GB2312的话,就用Byte转.不知道用得对不对。你试下?我文件上没加编码格式,如果需要你自己加上
--------------------编程问答-------------------- 谢谢楼上的,我现在就去试试~~~ --------------------编程问答-------------------- 提示找不到“saveFileDialog1” 还有的代码呢? --------------------编程问答--------------------
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();
}
要自己新增的啊.
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();
}
补充:.NET技术 , C#