最近弄一个数据采集器,程序在读取页面的时候用gb2312会出现乱码所以用了utf-8 一切正常;但后来去操作数据库(MSSQL) 打开表操作的时候 直接修改里面的字段时候报“将截断字符串或二进制数据”(SQL语句操作没有异常),通常我遇到这个问题想到的就是字符串长度问题造成的 但我看了表结构和表数据 我可以确定字符长度没有超出,因为我将程序插入的数据拷贝成新的一条数据后就完全正常,sql语句修改也没问题,数据呈现也未出现乱码请问这个是不是数据库和程序编码冲突问题,如何解决

解决方案 »

  1.   

    就用sql改吧
    mysql编码建立时一定得设置好要不会出现问题
      

  2.   

    这个数据采集不是自己开发的 是在网上档下来的 相关文章字段的采集是用字符串起始标签判断截取的 并没用正则表达式。#region 获得每个Url的文章标题、说明、正文内容,并插入数据库
                Gather_Article G_A = new Gather_Article();//文章对象            for (int i = 0; i < dt.Rows.Count; i++)
                {
                    strTemp = Common.getUrlSource(dt.Rows[i][0].ToString(), "utf-8"); //这儿获取URL页面的所以字符,传入URL和编码方式 估计问题就出在这儿                 //获取新闻内容配置
                    ds = Common.GetParticularConfig(DataSourceId, 3);                strTemp = Common.GetOperatedString(strTemp, ds);//查找字符并截取                 string strContent = strTemp;                // 获取新闻标题配置   
                    ds = Common.GetParticularConfig(DataSourceId, 4);                 strTemp = Common.GetOperatedString(strContent, ds);                G_A.Title = strTemp;                // 获取新闻说明配置
                    ds = Common.GetParticularConfig(DataSourceId, 5);                strTemp = Common.GetOperatedString(strContent, ds);                G_A.Resource = strTemp;                // 获取新闻正文内容配置
                    ds = Common.GetParticularConfig(DataSourceId, 6);                strTemp = Common.GetOperatedString(strContent, ds);                G_A.Content = strTemp;                if (!Common.CheckArticleExists(G_A.Title))
                    {
                        G_A.MgId = MgID;
                        Common.AddArticle(G_A);//添加文章到数据库
                    }
                }
                #endregion
    这是获取URL页面所以字符
    /// <summary>
            /// 根据采集url地址以及编码方式获得网页源代码
            /// </summary>
            /// <param name="strUrl">信息采集地址 eg:www.sina.com</param>
            /// <param name="strEncoding">编码方式 eg:gb2312,utf-8 etc</param>
            /// <returns>网页源代码字符串</returns>
            public string getUrlSource(string strUrl,string strEncoding)
            {
                string lsResult;
                try
                { 
                    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strUrl);
                    HttpWebResponse rep = (HttpWebResponse)req.GetResponse();                StreamReader sr = new StreamReader(rep.GetResponseStream(), Encoding.GetEncoding(strEncoding));                lsResult = sr.ReadToEnd();
                }
                catch(Exception ex)
                {
                    lsResult = "";
                    Console.WriteLine(ex.Message);
                }
                return lsResult;
            }将文章对象添加到数据库        /// <summary>
            /// 增加一条数据
            /// </summary>
            public int AddArticle(Gather_Article model)
            {
                StringBuilder strSql = new StringBuilder();
                strSql.Append("insert into Gather_Article(");
                strSql.Append("MgId,Title,Resource,Content");
                strSql.Append(")");
                strSql.Append(" values (");
                strSql.Append(model.MgId + ",");
                strSql.Append("'" + model.Title.Replace("'","''") + "',");
                strSql.Append("'" + model.Resource.Replace("'","''") + "',");
                strSql.Append("'" + model.Content.Replace("'","''") + "'");
                strSql.Append(")");            return Run.RunSql_Int(strSql.ToString());
            }
      

  3.   


    采集下来的数据没别的特殊地方 就是一般的HTML代码 检查后发现 插入数据库的时候用的替换"'"这个的时候会将数据改掉:如<span style='color:Red;'>会被改为<span style=''color:Red;''>(两个单引号) 其他的没什么特别的这儿贴一个采集到的数据 被替换过单引号
    <P style="TEXT-INDENT: 30px; MARGIN: 0px 3px 15px"><FONT size=3>住房公积金支取的政策有所调整。昨天,记者获悉,为保障缴存职工的合法权益,提高住房公积金的使用效率,市住房公积金管理中心下发有关通知,对住房公积金相关支取政策进行了调整,调整后的政策从2011年9月1日起施行。</FONT></P>
    <P style="TEXT-INDENT: 30px; MARGIN: 0px 3px 15px"><FONT size=3></FONT>&nbsp;</P>
    <P style="TEXT-INDENT: 30px; MARGIN: 0px 3px 15px"><FONT size=3>根据规定, 职工因购买、建造自住住房或者翻建、大修自住住房支取本人住房公积金账户中储存余额尚不足的,提取其配偶、父母、子女的住房公积金账户中的储存余额时,除满足规定的资金用途和相关人员书面同意条件外,还须符合职工本人缴存住房公积金的条件。本人没有住房公积金账户的,不得提取其父母、子女的住房公积金。</FONT></P>
    <P style="TEXT-INDENT: 30px; MARGIN: 0px 3px 15px"><FONT size=3><div class="SitePaging"><font style=''font-size:16px;''><< </font>&nbsp;&nbsp;<font style="font-size:16px;color: #FF0000;">1</font>&nbsp;&nbsp;&nbsp;<a href="/FangChanXingYeDongTai/84-20912_1.html"><font style="font-size:16px;"><u>2</u></font></a>&nbsp;&nbsp;<b><a href="/FangChanXingYeDongTai/84-20912_1.html"><font style=''font-size:16px;''>>></font></a></b><b><a href="/FangChanXingYeDongTai/84-20912_1.html"><font style=''font-size:16px;''> 尾页 </font></a>&nbsp;</b></div></div>
      

  4.   

    最好就 统一成 utf-8这样比较 常规一些
      

  5.   

    将截断字符串或二进制数据 我怎么看都像是长度的问题啊,还有就是mysql默认是latin1编码,你可以设置你的数据库为utf-8编码
      

  6.   

    strTemp = Common.getUrlSource(dt.Rows[i][0].ToString(), "utf-8");
    编码改成Encoding.Default参考
      

  7.   

    我测试是用的utf-8 因为用GB2312会出现乱码 截取字符的时候会出错,但用utf-8虽然成功了,可就是出现了我说的那个问题啊 在打开表操作的时候 无法修改
      

  8.   


    大哥你又没看题了 我是用的MSSQL 非MYSQL
      

  9.   


    直接改为Encoding.Default 和 用你说的参考方法都一样 数据插入正常 但打开表修改的时候 有将截断字符串或二进制数据的错误
      

  10.   


            [Title] [varchar](2000) NULL,
    [Resource] [varchar](2000) NULL,
    [Content] [text] NULL,对应采集到的数据 (无法打开表修改的)
    title: 居室换秋装 软装市场渐转旺
    resource :<strong>时间:</strong>2011-09-14 <strong>来源:</strong>西安日报  <strong>编辑:</strong>网络编辑<span><g:plusone></g:plusone></span>
    content :<P><FONT size=3>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 中秋时节,也正是“金九银十”争夺大幕启帷之时。记者注意到,多个软装家居品牌和卖场最近相继发布了各自的秋季新品和新季风尚。商家此举一是为了抓住消费者“换季添购”的消费心理,二是迎合秋季装修的黄金时段抢占市场。</FONT></P>
    <P><FONT size=3></FONT>&nbsp;</P>
    <P><FONT size=3>  时尚软装渐入人心</FONT></P>
    <P><FONT size=3></FONT>&nbsp;</P>
    <P><FONT size=3>  据了解,进去九月以来,窗帘及床上用品等产品销量明显增加。居美窗帘的销售人员告诉记者:“现代的都市人观念转变很大,以前一个家庭能将一套窗帘用十几年不更换,现在每到季节变换,就会有很多人前来选购新的窗帘,而且还有很多年轻人,对窗帘的色泽和材质要求特别高,由此可见,人们对软装饰品的重视程度。”</FONT></P>
    <P><FONT size=3></FONT>&nbsp;</P>
    <P><FONT size=3>  一位正在选购的赵女士告诉记者:“最近下的两场雨,天气明显转凉,原本打算十?一再更换床品和窗帘,也体早到现在选购。我觉得,我们应该根据气候及时调整窗帘、床品等凸显居室气氛的物品,这样不仅能让我们居住的更舒服,还能改变一成不变的居室风格,带来新的生活感触。”</FONT></P>
    <P><FONT size=3></FONT>&nbsp;</P>
    <P><FONT size=3><FONT color=#0000ff size=4><STRONG>&nbsp; 推荐阅读</STRONG></FONT></P>
    <H1 style="MARGIN: auto 0cm; mso-line-height-alt: 12.0pt"><SPAN style="COLOR: blue; FONT-SIZE: 14pt"></SPAN><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US><A href="http://www.hutlon.com/MingRenJiaJu/91-20882.html"><FONT face=宋体><FONT size=4><FONT color=#0000ff><SPAN lang=EN-US><SPAN lang=EN-US>月亮公主孟庭苇</SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US> </SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US>我的美丽心世界</SPAN></SPAN></FONT></FONT></FONT><FONT size=3></A></SPAN><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US></SPAN></H1>
    <H1 style="MARGIN: auto 0cm; mso-line-height-alt: 12.0pt"><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US><A href="http://www.hutlon.com/QiYeXinWen/65-20884.html"><FONT face=宋体><FONT color=#0000ff><FONT size=4><SPAN lang=EN-US><SPAN lang=EN-US>家好月圆,</SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US>欢乐游园—</SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US>汇泰龙2011</SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US>年中秋游园活动举行</SPAN></SPAN></FONT></FONT></FONT></A></SPAN><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US></SPAN></H1>
    <H1 style="MARGIN: auto 0cm; mso-line-height-alt: 12.0pt"><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US><A href="http://www.hutlon.com/FangChanXingYeDongTai/84-20819.html"><FONT face=宋体><FONT color=#0000ff><FONT size=4><SPAN lang=EN-US><SPAN lang=EN-US>五金行业<SPAN lang=EN-US>跨越大发展</SPAN></SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US> </SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US>附加值成关注焦点</SPAN></SPAN></FONT></FONT></FONT></A></SPAN><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US></SPAN></H1>
    <H1 style="MARGIN: auto 0cm; mso-line-height-alt: 12.0pt"><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US><A href="http://www.hutlon.com/XingZuoFengShuiJiaJu/92-20836.html"><SPAN lang=EN-US><SPAN lang=EN-US><FONT color=#0000ff size=4 face=宋体>不得不看!史上最全失败婚姻风水布局</FONT></SPAN></SPAN></A></SPAN><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US></SPAN></H1>
    <H1 style="MARGIN: auto 0cm; mso-line-height-alt: 12.0pt"><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US><A href="http://www.hutlon.com/QiYeXinWen/65-20712.html"><SPAN lang=EN-US><SPAN lang=EN-US><FONT color=#0000ff size=4 face=宋体>汇泰龙电视广告在凤凰卫视热播</FONT></SPAN></SPAN></A></SPAN><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US></SPAN></H1>
    <H1 style="MARGIN: auto 0cm; mso-line-height-alt: 12.0pt"><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US><A href="http://www.hutlon.com/XingZuoFengShuiJiaJu/92-20880.html"><FONT face=宋体><FONT color=#0000ff><FONT size=4><SPAN lang=EN-US><SPAN lang=EN-US>光棍年不光棍</SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US> </SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US>让你桃花朵朵开的家居风水</SPAN></SPAN></FONT></FONT></FONT></A></SPAN><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US></SPAN></H1>
    <H1 style="MARGIN: auto 0cm; mso-line-height-alt: 12.0pt"><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US><A href="http://www.hutlon.com/QiYeXinWen/65-20801.html"><FONT face=宋体><FONT color=#0000ff><FONT size=4><SPAN lang=EN-US><SPAN lang=EN-US>建设学习型组织,</SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US>促企业快速发展</SPAN></SPAN></FONT></FONT></FONT></A></SPAN><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US></SPAN></H1>
    <H1 style="MARGIN: auto 0cm; mso-line-height-alt: 12.0pt"><SPAN><A href="http://www.hutlon.com/QiYeXinWen/65-20712.html"><SPAN lang=EN-US><SPAN lang=EN-US><FONT color=#0000ff size=4 face=宋体>汇泰龙电视广告在凤凰卫视热播</FONT></SPAN></SPAN></A></SPAN></H1>
    <H1 style="MARGIN: auto 0cm; mso-line-height-alt: 12.0pt"><SPAN><A href="http://www.hutlon.com/ZhuangXiuZiXun/85-20658.html"><FONT color=#0000ff><FONT size=4><SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US><SPAN lang=EN-US>五金配件</SPAN></SPAN>“<SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US><SPAN lang=EN-US>四两拨千斤</SPAN></SPAN>” <SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'" lang=EN-US><SPAN lang=EN-US>选购有诀窍</SPAN></SPAN></FONT></FONT></A></SPAN></H1>
    <H1 style="MARGIN: auto 0cm; mso-line-height-alt: 12.0pt"><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US><A href="http://www.hutlon.com/manage/%E6%B1%87%E6%B3%B0%E9%BE%99%E4%BA%94%E9%87%91%E4%BA%A7%E5%93%81%E7%B3%BB%E5%88%97"><SPAN lang=EN-US><SPAN lang=EN-US><FONT color=#0000ff size=4 face=宋体>汇泰龙五金产品系列</FONT></SPAN></SPAN></A></SPAN><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US></SPAN></H1>
    <H1 style="MARGIN: auto 0cm; mso-line-height-alt: 12.0pt"><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US><A href="http://www.hutlon.com/WeiYuChanPin/76.html"><FONT face=宋体><FONT color=#0000ff><FONT size=4><SPAN lang=EN-US><SPAN lang=EN-US>汇泰龙卫浴产品系列</SPAN></SPAN><SPAN lang=EN-US><SPAN lang=EN-US> </SPAN></SPAN></FONT></FONT></FONT></A></SPAN><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US></SPAN></H1>
    <H1 style="MARGIN: auto 0cm; mso-line-height-alt: 12.0pt"><SPAN style="COLOR: blue; FONT-SIZE: 14pt" lang=EN-US><A href="http://www.hutlon.com/ZhiNengDianZiSuo/666.html"><SPAN lang=EN-US><SPAN lang=EN-US><FONT color=#0000ff size=4 face=宋体>汇泰龙智能电子锁系列</FONT></SPAN></SPAN></A><!--?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /--><?XML:NAMESPACE PREFIX = O /><O:P></O:P></SPAN></H1></FONT></FONT>
    <P><FONT size=3><div class="SitePaging"><font style='font-size:16px;'><< </font>&nbsp;&nbsp;<font style="font-size:16px;color: #FF0000;">1</font>&nbsp;&nbsp;&nbsp;<a href="/FangChanXingYeDongTai/84-20898_1.html"><font style="font-size:16px;"><u>2</u></font></a>&nbsp;&nbsp;&nbsp;<a href="/FangChanXingYeDongTai/84-20898_2.html"><font style="font-size:16px;"><u>3</u></font></a>&nbsp;&nbsp;&nbsp;<a href="/FangChanXingYeDongTai/84-20898_3.html"><font style="font-size:16px;"><u>4</u></font></a>&nbsp;&nbsp;<b><a href="/FangChanXingYeDongTai/84-20898_1.html"><font style='font-size:16px;'>>></font></a></b><b><a href="/FangChanXingYeDongTai/84-20898_3.html"><font style='font-size:16px;'> 尾页 </font></a>&nbsp;</b></div></div>请问如何超出?
      
      

  11.   

    有来看一下,在问一下,你说插入的时候数据是正常的,你不打开sql编辑,要是直接输出到页面,看看现实的数据是不是和你插入的数据一样。还有:如果你出入的数据很多的话,数据类型尽量用varchar(max),他比较稳定。
      

  12.   


    CREATE TABLE Gather_Article(
    AId int IDENTITY(1,1) PRIMARY KEY NOT NULL,
    MgId int NULL,
    Title varchar(2000) NULL,
    Resource varchar(2000) NULL,
    Content text NULL,
    IsShow int NULL,
    Picture varchar(500) NULL
    )
    这是脚本 除了主键 自增外 没别的约束,重复从何而来呢 并且数据是已经添加进去了 我只是对文本内容(title resource content )进行修改 不应该存在违法某种约束吧,并且选中某行复制程序插入的所有数据 粘贴到表最后 然后对其进行修改没任何异常 现在就是苦恼在这儿 
      

  13.   


    用了一个窗体把采集到的新闻数据读取出来没出现乱码 错误等另外:“还有:如果你出入的数据很多的话,数据类型尽量用varchar(max)”
    这个是什么用途?