程序和数据库编码问题

发布于 2021-11-04 01:48:33 字数 290 浏览 847 评论 4

最近弄一个数据采集器,程序在读取页面的时候用gb2312会出现乱码所以用了utf-8 一切正常;

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

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

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

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

已下线请稍等 2021-11-10 19:59:03

[Title] [varchar](2000) NULL,

[Resource] [varchar](2000) NULL,

[Content] [text] NULL,

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

眉黛浅 2021-11-10 17:50:17

这是获取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后数据正常了但是出现了我所提的问题

 

本王不退位尔等都是臣 2021-11-09 06:34:18

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

绝情姑娘 2021-11-06 09:30:01

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

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文