我有一张表,我们的服务提供商在其中插入UNICODE数据,但我的oracle characterset是WE8ISO8859P1。
现在要获取我使用oracle函数的数据,但它显示了???????
从client_campaigns中选择CONVERT(消息,'AL32UTF8','WE8ISO8859P1')
更多消息库存属于CLOB类型。
由于dataloss的原因,我无法更改数据库的字符集,其次是生产和字符集的更改可能会导致错误。
现在请指导我如何将这些数据作为UNICODE获取?
此致 imran
答案 0 :(得分:8)
插入字符(VARCHAR2或CHAR或CLOB)列的字符串将始终转换为数据库字符集。这意味着在您的情况下插入的数据将转换为WE8ISO8859P1。由于UNICODE不是WE8ISO8859P1的子集,因此您将丢失信息。字符集中的某些字符在插入时会转换为?
。
你应该怎么做?新数据有几种选择:
如果给出选择,我会选择选项(1)或(3)。使用RAW会禁用许多功能并增加复杂性。
显然,只有数据库可用的数据才能恢复先前的数据:您必须在新结构中重新导入旧数据。