UTF16十六进制到文本[英] UTF16 hex to text

本文是小编为大家收集整理的关于UTF16十六进制到文本的处理方法,想解了UTF16十六进制到文本的问题怎么解决?UTF16十六进制到文本问题的解决办法?那么可以参考本文帮助大家快速定位并解决问题。

问题描述

我有 UTF-16 十六进制表示,例如"0633064406270645",在阿拉伯语中是"سلام".

我想将其转换为等效的文本.在 PostgreSQL 中有直接的方法吗?

我可以像下面这样转换 UTF 代码点;不幸的是,似乎不支持 UTF16.关于如何在 PostgreSQL 中执行此操作的任何想法,最坏的情况是我会编写一个函数?

SELECT convert_from (decode (E'D8B3D984D8A7D985', 'hex'),'UTF8');

"سلام"

SELECT convert_from (decode (E'0633064406270645', 'hex'),'UTF16');

ERROR:  invalid source encoding name "UTF16"
********** Error **********

推荐答案

没错,Postgres 不支持 UTF-16.

但是,它确实支持 Unicode 转义序列:

SELECT U&'\0633\0644\0627\0645'

但请记住,Unicode 代码点和 UTF-16 代码单元仅在 基本多语言平面.换句话说,如果您有任何跨越多个 16 位代码单元的 UTF-16 字符,您需要自己将它们转换为相应的代码点.

本文地址:https://www.itbaoku.cn/post/1764030.html