数据库管理系统支持某种编码,主要涉及三个方面:
数据库服务器支持。
数据访问接口支持。
客户端工具支持。
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平时遇到的问题
对字符进行了错误的编码解析,导致出现乱码。
字符在两个字符集中都存在,导致这部分字符变成“”
- 大小: 273 Bytes
- 大小: 17.6 KB
- 大小: 253 Bytes
分享到:
相关推荐
本文从字符集的基本概念入手,介绍了字符集配置及查询的方法,分析了字符集出现问题的原因,阐述了数据库字符集转换的具体方法和步骤,并提出了进行字符集转换的建议。 字符集问题在 Oracle 数据库管理系统中具有...
虽然Unicode能够表示更多的字符,但由于多字节存储的特性,会占用更多的存储空间和网络带宽,因此在选择数据库字符集时仍需谨慎。 #### 五、数据库字符集的选择 在创建Oracle数据库时,可以指定两种字符集: 1. *...
Oracle数据库字符集转换规律全面剖析是一项关键的议题,尤其对于数据迁移、备份和恢复操作而言。Oracle数据库的字符集决定了如何存储和显示字符,不同字符集间的转换可能导致数据丢失或错误显示。在Export和Import...
在IT领域,数据库管理和数据传输过程中,字符集的匹配至关重要,尤其当涉及到多语言环境时。"Oracle英文字符集插入到中文字符集"的主题聚焦于如何在不同字符集之间进行有效转换,以便在不修改客户端环境变量的情况下...
由于各种原因,HIS与医保采用的Oracle数据库字符集不同,从而使得数据库间的数据交换遇到很大的困难。医院HIS数据库采用的字符集为US7ASCII,而医保软件采用的字符集是ZHS16GBK。这两种字符集的不同,使得数据库间的...
Oracle数据库系统分为国家字符集和数据库字符集两种。国家字符集针对特定国家或地区,支持本地语言的存储和处理,如GB18030用于简体中文,BIG5用于繁体中文。数据库字符集则是全球通用的,确保不同地区的用户都能将...
数据库编码转换程序是一种工具,主要用于解决在不同字符集之间迁移数据时可能出现的编码不兼容问题。在MySQL数据库和PHP编程环境中,这样的问题尤为常见。本文将深入探讨数据库编码转换的相关知识,包括字符集的基本...
字符转换是指将文本从一种字符集编码转换到另一种编码的过程。这在处理多语言环境、网络传输或者数据库存储时非常常见。例如,一个使用GBK编码的中文文件在Linux系统中可能需要转换为UTF-8才能正确显示。 **...
Oracle数据库字符集问题分析及解决方法主要关注的是在数据库操作,特别是数据迁移过程中可能出现的字符编码不兼容问题。字符集是数据库系统中用于表示和存储文本数据的关键组成部分,不同的字符集支持不同的语言和...
- 当遇到GBK字符显示异常时,首先检查数据库、表、列的字符集设置,然后是应用程序的编码配置,最后是数据传输过程中的编码转换问题。 7. **升级与迁移** - 在进行DB2版本升级或数据库迁移时,必须考虑GBK字符集...
Oracle数据库字符集问题主要涉及到数据库内部和客户端之间的字符编码匹配问题,这直接影响到包含中文字符的数据能否正确显示和处理。字符集的选择和配置是Oracle数据库管理和维护中的关键环节,尤其对于处理多语言...
Oracle数据库字符集是数据库系统中一个非常重要的概念,它决定了数据如何被编码和解码,影响着数据库中存储和检索的文本数据的正确性。在Oracle数据库中,字符集分为数据库字符集(Database Character Set)和国家...
### 关于GBK和Unicode字符集转换乱码问题 在计算机科学与互联网技术中,字符集是一种用于表示文本的标准集合,不同的字符集适用于不同的语言环境。本文将深入探讨GBK与Unicode这两种字符集之间的转换问题,特别是在...
了解字符集和字符编码有助于我们解决各种编码问题,如文件编码转换、网页显示异常等。在开发过程中,我们需要确保数据的输入、存储、传输和显示都使用相同的字符编码,以保证数据的一致性和正确性。同时,理解这些...
Oracle数据库字符集问题总结主要关注的是在数据迁移和交互时由于字符集差异导致的问题。字符集是决定数据库如何解释和存储字符的规则集合,对于Oracle数据库来说,它直接影响到数据的正确性和兼容性。 首先,Oracle...
在IT行业中,数据库编码是数据存储和检索的关键组成部分,不同的编码系统如GBK、UTF-8等,用于支持多种语言和字符集。当数据库中的数据编码不一致或需要迁移至不同编码环境时,可能会出现乱码或无法正确读取的问题,...
1. **数据库字符集与客户端字符集不一致**:Oracle数据库系统分为服务器端和客户端。服务器端的字符集决定了数据库中数据的存储格式,而客户端的字符集则影响数据在应用程序中的显示。当两者不匹配时,可能会出现...