获取Unicode值[PostgreSQL]

获取Unicode值[PostgreSQL],postgresql,unicode,Postgresql,Unicode,如果你看到这个 这一切都是关于unicode代码范围的 例如: U+0644 ل d9 84 ARABIC LETTER LAM 在PostgreSQL中,很容易获得十六进制值: select encode('ل','hex') 它将返回十六进制值d9 84 但是如何获得unicode代码点呢 谢谢如果您的输入字符串是UTF-8格式,您可以使用以下功能: ascii(字符串)整数 参数的第一个字符的ASCII码。 对于UTF8,返回字符的Unicode码点。其他 多字节编码。参数必

如果你看到这个

这一切都是关于unicode代码范围的

例如:

U+0644  ل   d9 84   ARABIC LETTER LAM
在PostgreSQL中,很容易获得十六进制值:

select encode('ل','hex')
它将返回十六进制值d9 84

但是如何获得unicode代码点呢


谢谢

如果您的输入字符串是UTF-8格式,您可以使用以下功能:

ascii(字符串)整数

参数的第一个字符的ASCII码。 对于UTF8,返回字符的Unicode码点。其他 多字节编码。参数必须是严格的ASCII字符


我尝试选择ascii('ل')::int,但结果是'1604',而不是644。感谢
1604
是十六进制值的十进制表示形式
0x644
-如果需要十六进制值,请运行
to_hex(ascii('1604;'))
。嗨,Andres,我在运行此查询时遇到了新问题,请选择decode(to_hex(ascii('1604;')::int),'hex');我得到错误“错误:无效十六进制数据:奇数位数”嗯,你为什么要这样做?这似乎是向后的,因为你已经有了一个字符?@Thessa,如果你想反转这个过程,你可以使用
chr()
,例如
chr(1604)
将给出
“ل”