The invention relates to the technical field of Internet, discloses a character encoding system, including: database connection removal unit, for receiving the client SQL statements, and out of the database connection from the connection pool; database access unit adapted for connection to the database of the current state and character encoding pre stored by the client, the current character encoding the same condition, the client according to the database connection database; database connection release unit, for executing the SQL statement after the release of the database connection to the connection pool. The invention also discloses a character encoding correction method. Access to the database character encoding state and the invention can make the client connection in the state of character encoding and database is the same, and in executing the SQL statement immediately after the current release of the database connection, can not only avoid the inconsistency of character encoding code, and can guarantee the beneficial effect of connecting all connections in the pool of effective reuse.
【技术实现步骤摘要】
本专利技术涉及互联网
,具体涉及一种。
技术介绍
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的连接并独占该连接,客户端一在自己的连接上执行SE ...
【技术保护点】
一种字符编码修正系统,其包括步骤:数据库连接取出单元,适于接收客户端的SQL语句,从连接池中取出数据库连接;数据库访问单元,适于在使得所述数据库连接的当前字符编码状态与预先保存的所述客户端当前字符编码状态相同时,所述客户端根据所述数据库连接访问数据库;数据库连接释放单元,适于在执行完所述SQL语句后释放所述数据库连接至所述连接池。
【技术特征摘要】
1.一种字符编码修正系统,其包括步骤: 数据库连接取出单元,适于接收客户端的SQL语句,从连接池中取出数据库连接; 数据库访问单元,适于在使得所述数据库连接的当前字符编码状态与预先保存的所述客户端当前字符编码状态相同时,所述客户端根据所述数据库连接访问数据库; 数据库连接释放单元,适于在执行完所述SQL语句后释放所述数据库连接至所述连接池。2.如权利要求1所述的字符编码修正系统,其中,所述数据库访问单元进一步包括: 字符编码状态设置单元,适于在所述SQL语句包括设置字符编码的语句时,设置所述数据库连接的当前字符编码状态为所述SQL语句中的字符编码; 字符编码状态更新单元,适于更新预先保存的所述客户端当前字符编码状态为所述SQL语句中的字符编码; SQL语句发送单元,适于将所述SQL语句通过所述数据库连接发送到所述数据库,以使所述客户端访问所述数据库。3.如权利要求1所述的字符编码修正系统,其中,所述数据库访问单元进一步包括: SQL语句发送单元,适于在所述SQL语句不包括设置字符编码的语句,且取出的所述数据库连接的当前字符编码状态与预先保存的所述客户端当前字符编码状态相同时,将所述SQL语句通过所述数据库连接发送到所述数据库,以使所述客户端访问所述数据库。4.如权利要求1所述的字符编码修正系统,其中,所述数据库访问单元进一步包括: SQL语句插入单元,适于在所述SQL语句不包括设置字符编码的语句,且取出的所述数据库连接的当前字符编码状态与预先保存的所述客户端当前字符编码状态不相同时,在所述SQL语句前插入设置字符编码的语句,以形成新的SQL语句; SQL语句发送单元,适于将所述新的SQL语句通过所述数据库连接发送到所述数据库,以使所述客户端访问所述数据库。5.如权利要求1~4中任一项所述的字符编码修正系统,其中,通过关系映射表保存所述客户端及所述客户端当前字符编码状态。6.一种字符编码修正方法,其包括步骤: 接收客户端的S...
【专利技术属性】
技术研发人员:朱超,陈飞,代兵,王超,
申请(专利权)人:北京奇虎科技有限公司,奇智软件北京有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。