程序和数据库编码问题

qxyywy 发布于 2011/09/15 11:43
阅读 438
收藏 0
最近弄一个数据采集器,程序在读取页面的时候用gb2312会出现乱码所以用了utf-8 一切正常;

但后来去操作数据库(MSSQL) 打开表操作的时候 直接修改里面的字段时候报“将截断字符串或二进制数据”(SQL语句操作没

有异常),通常我遇到这个问题想到的就是字符串长度问题造成的 但我看了表结构和表数据 我可以确定字符长度没有超出,因为

我将程序插入的数据拷贝成新的一条数据后就完全正常,sql语句修改也没问题,数据呈现也未出现乱码

请问这个是不是数据库和程序编码冲突问题,如何解决
加载中
0
ShaoJiahao
ShaoJiahao

数据库表编码是什么?页面编码是什么?

得确定是哪一个步骤的问题,后台从sql server读出来的数据已经出事,还是说到了页面才出事?如果是后台已经出事,那就改改客户端连接编码(mysql,估计mssql也差不多)试试咯~

0
LYbaron
LYbaron

你说的很有道理,我也碰到这个问题,不过我也没有搞明白,严厉求解决……而且速度。

0
qxyywy
qxyywy
这是获取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;

  }

 

先前用的是GB2312 这样会出现乱码 之后改为UTF-8后数据正常了但是出现了我所提的问题

 

0
qxyywy
qxyywy
[Title] [varchar](2000) NULL,
[Resource] [varchar](2000) NULL,

[Content] [text] NULL,

这是数据库的字段 不存在超出长度 后来在网上看了下有说用nvarchar 和 ntext的 但还是不能解决问题

返回顶部
顶部