我们在out应用程序中遇到一个非常奇怪的问题,突然我们开始注意到上下颠倒的问号与其他输入到屏幕上的文本一起被保存。这些颠倒的问号最初不是由用户输入的,目前尚不清楚它们来自何处。我们将Oracle 10g与Java一起使用。
即使没有从Microsoft Word复制任何数据,这种情况也在发生

最佳答案

当存储的字符无法由客户端呈现时,通常使用上下颠倒的问号。因此,数据库中的数据通常很好,这是客户端的限制。

我的第一步是使用DUMP函数来识别字节。
第一步,我要去除常见的“已知有效”字符(字母数字和空格)

select DUMP(translate(upper(col),'~ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 .,','~'),16) dmp,
       translate(upper(col),'~ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 .,','~') val
from ...
where translate(upper(col),'~ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 .,','~') is not null;


然后我集中精力还剩下什么。通常情况下,有一堆罕见但可接受的标点符号(点,逗号,连字符,撇号等)。我一一排除。

我无法排除的所有内容都会进行研究(例如,用谷歌搜索这些字节,这就是为什么我对DUMP使用'16'选项以使其为十六进制的原因)。它可能是带有重音符号的字符,或者像“测试”这样的引用,而不是平淡的“测试”。

10-07 22:51