[发明专利]字符编码修正系统及方法有效

专利信息
申请号: 201310511883.8 申请日: 2013-10-25
公开(公告)号: CN103544284B 公开(公告)日: 2018-06-12
发明(设计)人: 朱超;陈飞;代兵;王超 申请(专利权)人: 北京奇虎科技有限公司;奇智软件(北京)有限公司
主分类号: G06F17/30 分类号: G06F17/30
代理公司: 北京路浩知识产权代理有限公司 11002 代理人: 李相雨
地址: 100088 北京市西城区新*** 国省代码: 北京;11
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 数据库连接 字符编码 客户端 连接池 访问数据库 修正系统 数据库访问单元 互联网技术 立即释放 取出单元 有效复用 预先保存 释放 不一致 乱码 取出 修正 客户 保证
【说明书】:

发明涉及互联网技术领域,公开了一种字符编码修正系统,包括:数据库连接取出单元,适于接收客户端的SQL语句,从连接池中取出数据库连接;数据库访问单元,适于在使得所述数据库连接的当前字符编码状态与预先保存的所述客户端当前字符编码状态相同时,所述客户端根据所述数据库连接访问数据库;数据库连接释放单元,适于在执行完所述SQL语句后释放所述数据库连接至所述连接池。本发明还公开了一种字符编码修正方法。本发明能够使得客户端在其字符编码状态与数据库连接的字符编码状态相同时访问数据库,并在执行完当前的SQL语句后立即释放该数据库连接,达到了既能避免字符编码不一致导致的乱码,又能保证连接池内所有连接的有效复用的有益效果。

技术领域

本发明涉及互联网技术领域,具体涉及一种字符编码修正系统及方法。

背景技术

MySQL数据库的数据存储也支持多种字符编码(字符编码:为了用二进制表示各种字母、文字、符号等,人们制定了各种字符编码方式,通过各种事先定义好的二进制串来表示各个字符。信息的读出和写入必须使用相同的编码方式,才不会造成乱码,如GB2312用两个字节表示一个汉字,而UTF-8用三个字节表示一个汉字,如果写入一个用GB2312编码的汉字,读出后再用UTF-8编码去解析,就只能得到错误的结果),如:GBK、UTF-8等。为此MySQL专门提供了设置字符编码的语句:SET NAMES,如SET NAMES GBK,就将当前的字符编码设置成了GBK,之后的读写都按照GBK编码进行。

字符编码状态是与数据库连接绑定的,也就是说,在多个连接上设置的不同编码互不影响。例如:两个客户端,分别连接到同一台MySQL数据库服务器,然后分别执行SETNAMES GBK和SET NAMES UTF8,之后两个客户端分别以GBK和UTF-8编码来读写数据,互不冲突。

在没有连接池(每一次数据访问请求都必须经历建立数据库连接、打开数据库、存取数据和关闭数据库连接等步骤,而连接并打开数据库是一件既消耗资源又费时的工作,如果频繁发生这种数据库操作,系统的性能必然会急剧下降。数据库连接池技术是在存取数据操作完成后,并不关闭数据库连接,而是将其存储起来,下个数据库请求就可以直接使用这个连接,通过复用已建立的数据库连接,极大地节省系统资源和时间)时,每个客户端建立一个到MySQL的连接并独占该连接,客户端一在自己的连接上执行SET NAMES语句不会影响到客户端二的连接上的编码状态。而在引入连接池后,问题变得有些复杂,因为现在客户端不再独占一个连接,而是每执行完一条SQL语句,所使用过的连接就被放回连接池,一个客户端要执行下一条SQL语句,连接池再取出一个建立好的连接给其使用。换句话说,同一个客户端执行的多条SQL语句所使用的连接不一定是同一个,而是每执行完一条语句,连接就被更换。这样做目的是为了连接池内的连接可以被有效复用,提升连接的整体利用效率。

但由于字符编码的状态与连接绑定,因此客户端一在执行某条SQL语句时使用的很可能是客户端二执行过SET NAMES语句的连接,这样就会导致客户端一错误地使用UTF-8编码去读写GBK编码的数据,后果就是乱码。

现有技术中,一种防止出现乱码的解决方案是部分取消连接的复用,即一个客户端在运行期间独占一个连接,直到该客户端退出后,它占用的连接才被放回连接池。因为在这个客户端运行期间包括SET NAMES在内的所有SQL语句都在同一个连接上执行,因此可以保证字符编码的统一,避免出现乱码的情况。

显然上述解决方案的缺点是连接的复用度大大降低。每个客户端在运行期间除了执行SQL语句还会处理其他逻辑,也就是说执行两条SQL语句之间存在一定的时间间隔,如果是完全复用连接类型的连接池,在该间隔内这个客户端占用的连接就会被放回连接池供其他客户端使用,而在上述解决方案的架构中,该连接得不到利用,只能被该客户端占用不放。只有在该客户端退出后其占用的连接才能被其他客户端使用。

发明内容

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的字符编码修正系统及方法。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京奇虎科技有限公司;奇智软件(北京)有限公司,未经北京奇虎科技有限公司;奇智软件(北京)有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201310511883.8/2.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top