解决方法
每个Oracle数据库实例都有2个可用的字符集配置:
>默认字符集(由char,varchar2,clob等类型使用)
>国家字符集(由nchar,nvarchar2,nclob等类型使用)
由于默认字符集可以配置为不支持所有Unicode字符的字符集(例如Windows 1252),因此Oracle也提供此备用字符集配置,这保证支持Unicode.
因此,假设您的数据库使用Windows-1252作为其默认字符集(不是我推荐它),而UTF-8用于国家(或备用)字符集……
然后,如果你有一个表格列,你不需要支持各种奇怪的unicode字符,那么你可以使用像varchar2这样的类型.通过这样做,你可能会节省一些空间.
但是,如果您确实需要存储和支持unicode字符,那么对于该特定实例,您的列应定义为nvarchar2,或者使用国家字符集的其他类型.
也就是说,如果数据库的默认字符集已经是支持Unicode的字符集,那么使用nchar,nvarchar2等类型并不是必需的.