程序和数据库编码问题
最近弄一个数据采集器,程序在读取页面的时候用gb2312会出现乱码所以用了utf-8 一切正常;
但后来去操作数据库(MSSQL) 打开表操作的时候 直接修改里面的字段时候报“将截断字符串或二进制数据”(SQL语句操作没
有异常),通常我遇到这个问题想到的就是字符串长度问题造成的 但我看了表结构和表数据 我可以确定字符长度没有超出,因为
我将程序插入的数据拷贝成新的一条数据后就完全正常,sql语句修改也没问题,数据呈现也未出现乱码
请问这个是不是数据库和程序编码冲突问题,如何解决
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
[Title] [varchar](2000) NULL,
[Resource] [varchar](2000) NULL,
[Content] [text] NULL,
这是数据库的字段 不存在超出长度 后来在网上看了下有说用nvarchar 和 ntext的 但还是不能解决问题
这是获取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后数据正常了但是出现了我所提的问题
你说的很有道理,我也碰到这个问题,不过我也没有搞明白,严厉求解决……而且速度。
数据库表编码是什么?页面编码是什么?
得确定是哪一个步骤的问题,后台从sql server读出来的数据已经出事,还是说到了页面才出事?如果是后台已经出事,那就改改客户端连接编码(mysql,估计mssql也差不多)试试咯~