黑马程序员技术交流社区

标题: 少了什么东西了乱码 [打印本页]

作者: 王国文    时间: 2012-5-23 03:08
标题: 少了什么东西了乱码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Data.SqlClient;

namespace 导入
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public static string str = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;Integrated Security=True;User Instance=True";

        private void button1_Click(object sender, EventArgs e)
        {
            if (ofdImport.ShowDialog()!=DialogResult.OK)
            {
                return;
            }
            
            using (FileStream fileStream =File.OpenRead(ofdImport.FileName))
            {
                using (StreamReader stringreader = new StreamReader(fileStream))
                {
                    string line = null;
                    while ((line = stringreader.ReadLine()) != null)
                    {
                        string[] strs = line.Split('|');
                        string name = strs[0];
                        int age = Convert.ToInt32(strs[1]);

                        using (SqlConnection con = new SqlConnection(str))
                        {
                            con.Open();
                            using (SqlCommand cmd =con.CreateCommand())
                            {
                                cmd.CommandText = "insert into T_persons (name,age) values (@name,@age)";
                                cmd.Parameters.Add(new SqlParameter("@name", name));
                                cmd.Parameters.Add(new SqlParameter("age",age));
                                cmd.ExecuteNonQuery();
                            }
                        }


     
                    }
                }
               
            }
            

        }
    }
}
name  age
lilei  |    25
张三 |  21


插入成功后,张三是乱码,英文的那一行正常
作者: 朱亮辉    时间: 2012-5-23 09:15
看一下你数据库的编码是什么格式的,插入的数据和数据库的编码格式要一样的哦!
cmd.Parameters.Add(new SqlParameter("age",age));还有就是你不感觉你的这句话有问题吗。应该是这样的吧cmd.Parameters.Add(new SqlParameter("@age",age));
作者: 王国文    时间: 2012-5-23 13:04
朱亮辉 发表于 2012-5-23 09:15
看一下你数据库的编码是什么格式的,插入的数据和数据库的编码格式要一样的哦!
cmd.Parameters.Add(new Sq ...

是少了@,数据库的编码格式怎么看啊   后来我把txt的改成unicode,就没事了   
作者: 朱亮辉    时间: 2012-5-23 16:54
USE master
DECLARE @Str sql_variant
SET @Str = (SELECT collationproperty('Chinese_PRC_Stroke_CI_AI_KS_WS', 'CodePage'))
BEGIN
IF @Str=936
  print '简体中文'
else if @Str=950
  print '繁体中文'
else if @Str=437
  print '美国/加拿大英语'
else if @Str=932
  print '日文'
else if @Str=949
  print '韩文'
else if @Str=866
  print '俄文'
else
print 'unicode UFT-8'
end

你把SQL 语句直接复制到SQL Server 中运行一下看输出的是什么编码格式的。
作者: 逝去的谎言    时间: 2012-6-9 13:51
可以把txt文件的格式转为uft-8编码,它默认为anst编码的。
作者: 樊占江    时间: 2012-8-5 00:11
输出的数据是乱码无非是俩种情况: 一 数据库的问题 二 格式的问题




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2