首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在甲骨文中存储特殊字符?

如何在甲骨文中存储特殊字符?
EN

Stack Overflow用户
提问于 2022-05-24 11:25:30
回答 2查看 206关注 0票数 0

我试图在oracle数据库中保存一个带有特殊字符的字符串。在此字符串中包含键盘电话中的所有可用字符。问题是:一些角色变成了“角色”。我需要存储我插入的准确字符。

我用下面的代码模拟了一些情况:

1-我创建了一个具有不同类型的列( clob、nclob、varchar2、nvarchar2 )的测试表。

代码语言:javascript
运行
复制
create table specialCharacters (
  testColumn1 clob null,
  testColumn2 nclob null,
  testColumn3 varchar2(1000) null,
  testColumn4 nvarchar2(1000) null
);

2-我编写了一个示例字符串,其中包含一些基于键盘fone的特殊字符:

“⅕⅙⅛-1-1-1-1-1-1-1-1-2-⅓-1/2⅔”

‘,’,.#?$!%^@,?!‘

3-我在specialCharacters中的所有列中插入了这个字符串,我尝试了以下两种不同的方法:

代码语言:javascript
运行
复制
insert into specialCharacters values 
  (' ¹⅕⅙⅛¹½½⅓¼²⅔', 
   ' ¹⅕⅙⅛¹½½⅓¼²⅔', 
   ' ¹⅕⅙⅛¹½½⅓¼²⅔', 
   ' ¹⅕⅙⅛¹½½⅓¼²⅔'
  );

insert into specialCharacters values 
  ( ';,¿‽?`•~\|□{}€£¥₩♣︎♧¿◆◇♥︎♡♠︎♤■□●○•°★☆▪︎¤《》¡¿,.#?$!%^@,?!!',
   ';,¿‽?`•~\|□{}€£¥₩♣︎♧¿◆◇♥︎♡♠︎♤■□●○•°★☆▪︎¤《》¡¿,.#?$!%^@,?!!',
   ';,¿‽?`•~\|□{}€£¥₩♣︎♧¿◆◇♥︎♡♠︎♤■□●○•°★☆▪︎¤《》¡¿,.#?$!%^@,?!!',
   ';,¿‽?`•~\|□{}€£¥₩♣︎♧¿◆◇♥︎♡♠︎♤■□●○•°★☆▪︎¤《》¡¿,.#?$!%^@,?!!'
  );
  
  
insert into specialCharacters values 
  (TO_CLOB(' ¹⅕⅙⅛¹½½⅓¼²⅔'), 
   TO_NCLOB(' ¹⅕⅙⅛¹½½⅓¼²⅔'), 
   ' ¹⅕⅙⅛¹½½⅓¼²⅔', 
   ' ¹⅕⅙⅛¹½½⅓¼²⅔'
  );
  
insert into specialCharacters values 
  ( TO_CLOB(';,¿‽?`•~\|□{}€£¥₩♣︎♧¿◆◇♥︎♡♠︎♤■□●○•°★☆▪︎¤《》¡¿,.#?$!%^@,?!!'),
   TO_NCLOB(';,¿‽?`•~\|□{}€£¥₩♣︎♧¿◆◇♥︎♡♠︎♤■□●○•°★☆▪︎¤《》¡¿,.#?$!%^@,?!!'),
   ';,¿‽?`•~\|□{}€£¥₩♣︎♧¿◆◇♥︎♡♠︎♤■□●○•°★☆▪︎¤《》¡¿,.#?$!%^@,?!!',
   ';,¿‽?`•~\|□{}€£¥₩♣︎♧¿◆◇♥︎♡♠︎♤■□●○•°★☆▪︎¤《》¡¿,.#?$!%^@,?!!'
  );

4-specialCharacters中的选择结果:

从specialCharacters中选择*;

编辑

NLS_CHARACTERSET:

NLS_NCHAR_CHARACTERSET:

clob列中的函数转储似乎不起作用,但在testColumn3和testColumn4中返回了以下结果:

最后,我尝试将字符更改为AL32UTF8,但不起作用,我认为模式字符已经覆盖了AL32UTF8字符

EN

回答 2

Stack Overflow用户

发布于 2022-05-24 11:50:40

您能检查一下数据库上的字符集吗,推荐的是AL32UTF8。如果是不同的,您可能需要更改DB上的字符。如果建议它的活动/prod备份。

代码语言:javascript
运行
复制
select * from v$nls_parameters where parameter in ('NLS_CHARACTERSET');

请参阅字符集上的Oracle文档

票数 0
EN

Stack Overflow用户

发布于 2022-05-24 15:46:20

从不alter database character set ...打电话!您可能会损坏整个数据库。

字符集WEMSWIN1252不能存储像◇♥︎♡♠︎♤■□●○•°★☆▪︎¤《这样的字符。您需要使用Unicode字符集,最好是UTF-8,也就是.AL32UTF8。有关正确的迁移,请参见(见字符集迁移和/或Unicode的Oracle数据库迁移助理)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72362035

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档