如何使用PostgreSQL将字符串转换为unicode?

Mee*_*eem 0 postgresql unicode

在这里,我想将我的字符串转换为unicode.我正在使用PostgreSQL 9.3版本.在SQL Server中它更容易:

示例:

   sql = N'select * from tabletest'; /* For nvarchar/nchar/ntext */
Run Code Online (Sandbox Code Playgroud)

要么

   sql = U'select * from tabletest'; /* For varchar/char/text */
Run Code Online (Sandbox Code Playgroud)

问题:如何在PostgreSQL中进行上述转换?

Cra*_*ger 9

PostgreSQL数据库具有本机字符类型,即"服务器编码".它通常是utf-8.

所有文本都采用此编码方式.不支持混合编码文本,除非存储为bytea(即作为不透明的字节序列).

您不能存储"unicode"或"非unicode"字符串,PostgreSQL没有"varchar"与"nvarchar"的概念.使用utf-8,属于7位ASCII范围(以及其他一些)的字符存储为单个字节,更宽的字符需要更多存储空间,因此它只是自动存储.UTF-8需要比UCS-2或UTF-16的文字即所有的"宽"字符更多存储空间,但对于更小的文字,这是一个混合物.

PostgreSQL使用该client_encoding设置自动转换为客户端的文本编码.无需明确转换.

如果您的客户端是"Unicode"(Microsoft产品在他们的意思是UCS-2或UTF-16时倾向于说),那么大多数客户端驱动程序会为您处理任何utf-8 < - > utf-16转换.

所以,你不应该需要关心,只要你的客户确实有正确的字符集选项I/O,并设置正确的client_encoding,它实际上将电线上的数据相匹配.(对于大多数客户端驱动程序,如PgJDBC,nPgSQL或Unicode psqlODBC驱动程序,这是自动的).

看到:

  • 非常感谢. (2认同)