Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Oracle无法存储表情符号_Java_Oracle_Oracle11g - Fatal编程技术网

Java Oracle无法存储表情符号

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

我在将表情符号保存到Oracle数据库时遇到问题。 这是一个简单的Java程序,它从网页获取用户输入并将其保存到数据库中

这是我保存到DB之前的样子

这就是它从数据库中检索时的样子

数据库列被定义为
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.

enter image description here

In order to see emoji in sql*plus do following:

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)