Oracle DB中的特殊字符问题

时间:2019-05-16 13:31:35

标签: oracle special-characters

我需要在一个具有特殊字符的表中更新值。 以下是我已执行的更新查询:

    UPDATE TABLE_X
        SET DISPLAY_NAME = 'AC¦', NATIVE_IDENTITY='AC¦'
        WHERE ID='idNumber'

Oracle中的特殊字符“ ¦”没有更新。

我已经尝试过以下方法:

  1. 使用以下查询检查Oracle中使用的字符集
    select * from nls_database_parameters  where parameter='NLS_CHARACTERSET';

它具有“ US7ASCII”字符集。

  1. 我试图查看是否有任何字符集可以帮助使用以下查询
   SELECT CONVERT('¦ ', 'ASCII') FROM DUAL; 

我尝试了以下不同的编码方式:

  • WE8MSWIN1252
  • AL32UTF8
  • BINARY-此错误信息为“ ORA-01482:不支持的字符集”

在更改数据库中的字符集之前,我想尝试使用Oracle的'CONVERT'功能,但是上述字符集要么返回“块符号”,要么返回“ QuestionMark-”符号。

任何想法如何将这个特殊符号合并到DB中?

1 个答案:

答案 0 :(得分:1)

假设所讨论的字符不是US7ASCII character set的一部分,除非您想将其替换为ASCII竖线字符|,否则它似乎不是该字符的一部分,因此您无法有效地将字符存储在数据库中的VARCHAR2列。

  • 您可以将数据库字符集更改为支持您要代表的所有字符的字符集
  • 假设您的国家字符集通常是UTF-16,则可以将列的数据类型更改为NVARCHAR2
  • 您可以在RAW列中将某个字符的二进制表示形式存储在某个已知的字符集中,然后从应用程序逻辑中的二进制表示形式进行转换。

我希望更改数据库字符集,但这可能是一个重大更改。