【问题标题】:Special Character issue in Oracle DBOracle DB 中的特殊字符问题
【发布时间】:2019-05-16 13:31:35
【问题描述】:

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

    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:不支持的字符集”

在更改 DB 中的字符集之前,我想尝试一下 Oracle 的“CONVERT”功能,但上面提到的字符集要么返回“块符号”,要么返回“问号”符号。

知道如何将这个特殊符号合并到 DB 中吗?

【问题讨论】:

    标签: oracle special-characters


    【解决方案1】:

    假设有问题的字符不是US7ASCII character set 的一部分,除非您想用 ASCII 竖线字符 | 替换它,否则它似乎不是US7ASCII character set 的一部分,您不能有效地将字符存储在@ 987654322@数据库中的列。

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

    我更喜欢更改数据库字符集,但这可能是一项重大更改。

    【讨论】:

      猜你喜欢
      • 2015-09-28
      • 1970-01-01
      • 2011-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多