最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
当前位置: 首页 - 科技 - 知识百科 - 正文

数据库字符集和编码转换

来源:懂视网 责编:小采 时间:2020-11-09 15:31:12
文档

数据库字符集和编码转换

数据库字符集和编码转换:数据库管理系统支持某种编码,主要涉及三个方面: 数据库服务器支持。 数据访问接口支持。 客户端工具支持。 1 数据库服务器字符编码 : 数据库服务器支持某种编码,是指数据库服务器能够从客户端接收、存储以及向客户端提供该种编码的字符(包括标识符、字
推荐度:
导读数据库字符集和编码转换:数据库管理系统支持某种编码,主要涉及三个方面: 数据库服务器支持。 数据访问接口支持。 客户端工具支持。 1 数据库服务器字符编码 : 数据库服务器支持某种编码,是指数据库服务器能够从客户端接收、存储以及向客户端提供该种编码的字符(包括标识符、字

数据库管理系统支持某种编码,主要涉及三个方面: 数据库服务器支持。 数据访问接口支持。 客户端工具支持。 1 数据库服务器字符编码 : 数据库服务器支持某种编码,是指数据库服务器能够从客户端接收、存储以及向客户端提供该种编码的字符(包括标识符、字

数据库管理系统支持某种编码,主要涉及三个方面:

数据库服务器支持。

数据访问接口支持。

客户端工具支持。

1 数据库服务器字符编码:

数据库服务器支持某种编码,是指数据库服务器能够从客户端接收、存储以及向客户端提供该种编码的字符(包括标识符、字符型字段值),并能将该种编码的字符转换到其它编码(如UTF-8编码转到GBK编码)。

1.1指定数据库服务器编码:

Postgresql:

创建数据库时指定:

CREATE DATABASE … ENCODING …

可以取ASCII、UTF-8、EUC_CN、……

1.2查看数据库编码

Postgresql:

show server_encoding

2 数据库访问接口编码

数据访问接口支持某种编码,该接口要做到能对该种编码的字符进行正确读写,不应出现数据丢失、数据失真等情况。

以JDBC接口为例:

JDBC接口一般根据JVM的file.encoding设置client_encoding,set client_encoding to file_encoding。

将String转换成client_encoding编码的字节流,传给服务器端,原型String.getBytes(client_encoding) 。

收到服务器的字节流后,使用client_encoding构造String对象作为getString的返回值给应用程序,原型String(byte[], …, client_encoding)

3 客户端编码

客户端工具支持某种编码,必须能够显示从数据库读取的该种编码的字符,也能通过本工具将该种编码的字符提交到给服务器端。

3.1 Postgresql指定会话的客户端编码

SET CLIENT_ENCODING TO 'value'

3.2查看数据库编码

Show client_encoding

4 查看字符不同编码的二进制字符串

下面是几个字符在不同编码下数据库中的二进制存储串,Postgresql中Select decoding(name,’escape’) from test可以查看数据库服务器中二进制串。

4。1 以“贝钢”为例

GBK编码为:B1B4 B8D6

UTF-8编码为:E8B49D E992A2

GB18030编码为:B1B4 B8D6

4。2 以“”为例
GBK编码为:FE57 FE54

UTF-8编码为:EEA09C EEA099

GB18030编码为:8336C9388336C935

5 编码转换示例

下面通过具体的例子看一下,这个例子中客户端使用GBK/GB18030编码,接口两端使用GBK18030编码,数据库服务器使用UTF-8编码:



转换涉及:

应用程序中编码和连接客户端编码之间的转换

连接服务器端编码和数据库服务器编码之间的转换

在上图中以橙红色箭头表示

以“”为例,不同编码下在数据库服务器中的二进制串分别为:

GBK编码为:FE57 FE54

UTF-8编码为:EEA09C EEA099

GB18030编码为:8336C9388336C935

Socket:

编程接口保证发送给服务器端的字符编码和当前会话的client_encoding保持一致。

可以将client_encoding设成从应用程序获得的字符的当前编码

也可以获得当前会话的client_encoding,将从应用程序获得的字符转化成client_encoding设置的编码

Server:

client_encoding和server_encoding 之间的转换

根据数据库编码转换算法转换,把目标编码中没有的做法转换成问号“

6平时遇到的问题

对字符进行了错误的编码解析,导致出现乱码。

字符在两个字符集中都存在,导致这部分字符变成“

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文档

数据库字符集和编码转换

数据库字符集和编码转换:数据库管理系统支持某种编码,主要涉及三个方面: 数据库服务器支持。 数据访问接口支持。 客户端工具支持。 1 数据库服务器字符编码 : 数据库服务器支持某种编码,是指数据库服务器能够从客户端接收、存储以及向客户端提供该种编码的字符(包括标识符、字
推荐度:
标签: 转换 代码 数据库
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top