Java Oracle无法存储表情符号
我在将表情符号保存到Oracle数据库时遇到问题。 这是一个简单的Java程序,它从网页获取用户输入并将其保存到数据库中 这是我保存到DB之前的样子 这就是它从数据库中检索时的样子 数据库列被定义为Java Oracle无法存储表情符号,java,oracle,oracle11g,Java,Oracle,Oracle11g,我在将表情符号保存到Oracle数据库时遇到问题。 这是一个简单的Java程序,它从网页获取用户输入并将其保存到数据库中 这是我保存到DB之前的样子 这就是它从数据库中检索时的样子 数据库列被定义为CLOB,因此我希望它可以用表情符号保存文本 我还尝试使用sqlplus保存和检索表情符号,但也没有成功: SQL> update emoji_table set emoji_column = 'Test You can totally store emoji's, or any other
CLOB
,因此我希望它可以用表情符号保存文本
我还尝试使用sqlplus保存和检索表情符号,但也没有成功:
SQL> update emoji_table set emoji_column = 'Test You can totally store emoji's, or any other multibyte character in an Oracle DB.
And see them in SQL Developer.
My DB has a UTF-8 characterset.
My SQL Developer has an emoji-friendly display font.
I have a text field wide enough to store these.
With display font set to 'Segoe UI Emoji
These are stored in a CLOB, but a wide enough VARCHAR2 would work just as well.
If your db charset isn't UTF-8 or similar, you may need to rely on the NCLOB or NVARCH2 data types assuming you have extended character set available.
In order to see emoji in sql*plus do following:
- Choose a font which is capable to display emojis (see FACE WITH TEARS OF JOY (U+1F602) Font Support)
- Set character set of your console to UTF-8
- Set
NLS_LANG
accordingly
- Run slqplus
On Windows it would be:
chcp 65001
set NLS_LANG=.AL32UTF8
sqlplus ...
SQL>updateemoji\u table set emoji\u column='Test您可以在Oracle数据库中完全存储表情符号或任何其他多字节字符
并在SQLDeveloper中查看它们
我的数据库有一个UTF-8字符集
我的SQL Developer有一种易用表情符号的显示字体
我有一个足够宽的文本字段来存储这些内容
显示字体设置为“Segoe UI表情符号”
它们存储在CLOB中,但是足够宽的VARCHAR2也可以工作
如果db字符集不是UTF-8或类似类型,则可能需要依赖NCLOB或NVARCH2数据类型,前提是您有可用的扩展字符集
您完全可以在Oracle数据库中存储表情符号或任何其他多字节字符
并在SQLDeveloper中查看它们
我的数据库有一个UTF-8字符集
我的SQL Developer有一种易用表情符号的显示字体
我有一个足够宽的文本字段来存储这些内容
显示字体设置为“Segoe UI表情符号”
它们存储在CLOB中,但是足够宽的VARCHAR2也可以工作
如果db字符集不是UTF-8或类似类型,则可能需要依赖NCLOB或NVARCH2数据类型,前提是您有可用的扩展字符集
要在sql*plus中查看表情符号,请执行以下操作:
- 选择能够显示表情的字体(请参阅)
- 将控制台的字符集设置为UTF-8
- 相应地设置
NLS_LANG
- 运行slqplus
在Windows上,它将是:
关于java中的设置,请查看。由于您以?
的形式获取数据,因此我假设该值以的形式正确插入数据库,以便在sql*中查看表情符号,并执行以下操作:
- 选择能够显示表情的字体(请参阅)
- 将控制台的字符集设置为UTF-8
- 相应地设置
NLS_LANG
- 运行slqplus
在Windows上,它将是:
关于java中的设置,请查看。由于您以?
的形式获取数据,因此我假设该值以的形式正确插入到数据库中,您需要使列NCLOB
支持unicode,或者更改为数据库本身以支持unicode。如果您还没有看到它,请查看数据库的NLS\U字符集
是什么?从emoji\u表中选择DUMP(emoji\u列,1016),其中emoji\u表id=123
?然后尝试DUMP(TO\u CHAR(emoji\u列),1016)
您需要使列NCLOB
支持unicode,或者更改为数据库本身以支持unicode。如果您还没有看到它,请查看数据库的NLS\U字符集
是什么?从emoji\u表中选择DUMP(emoji\u列,1016),其中emoji\u表id=123
?然后尝试转储(TO\u CHAR(emoji\u列),1016)