我有一个应用程序,它在DB2数据库中存储推文,并且需要一些时间来检索它们。我在显示带有表情符号的文本字符串时遇到了麻烦(某些表情符号失去了格式)。
我一直在互联网上阅读不同的答案,但是大多数答案是针对MySQL的(从utf8切换到utf8mb4),但是对于DB2则什么也没有。
在DB2数据库中有什么方法可以执行以下操作吗?
https://mathiasbynens.be/notes/mysql-utf8mb4
非常感谢
答案 0 :(得分:4)
您可以在Db2 Unicode数据库中使用这样的Unicode常量
$ db2 "values U&'\+01F600'"
1
----
?
1 record(s) selected.
U&,后跟一个以字符串定界符开头和结尾的字符序列,并可选地后面是UESCAPE子句。字符串常量的这种形式也称为Unicode字符串常量。
可以通过印刷字符(字形)或Unicode代码点来表示字符。 Unicode字符的代码点范围从X'000000'到X'10FFFF'。
要通过代码点表示Unicode字符,请使用Unicode转义字符,后跟4个十六进制数字,或者使用Unicode转义字符,后接加号(+)和6个十六进制数字。默认的Unicode转义字符是反斜线()
或者您可以根据需要使用UTF-8十六进制值
db2 "values x'F09F9880'"
1
----
?
1 record(s) selected.
答案 1 :(得分:2)
您能说明问题是什么吗?对于UTF-8数据库,链接示例没有问题
$ db2 "create table emoji(string_with_emjoi varchar(32))"
DB20000I The SQL command completed successfully.
$ db2 "insert into emoji values 'foo?bar'"
DB20000I The SQL command completed successfully.
$ db2 "select string_with_emjoi, hex(string_with_emjoi) string_with_emjoi_hex from emoji"
STRING_WITH_EMJOI STRING_WITH_EMJOI_HEX
-------------------------------- ----------------------------------------------------------------
foo?bar 666F6FF09D8C86626172
emjoi的代码点存储4个字节(0xF09D8C86)。如果在检索后显示表情符号时出现问题,则需要更深入地挖掘并查看数据库返回的实际值是什么-问题很可能出在应用程序本身中。