2016-10-18 82 views
0

我有一个Oracle表中包含这个特殊的Unicode 字符(正方形带白色问号)的一些数据。这里有各种表示如何替换PL/SQL中的一个特殊的Unicode字符

Unicode字符十月十二月十六进制HTML 结果1 - 1个 替换字符的1

OCT = 0177775 
DEC = 65533 
HEX = 0xFFFD  
HTML = &#65533 

我想知道我怎么可以说替换该符号“^”,而我选择数据?我知道有一个REPLACE()函数,但我没有成功使用它。有人可以帮忙吗?

谢谢

+0

什么是数据库字符集?另外,对包含该字符的字符串使用'DUMP()'函数,并找出它具有的代码值。 (例如:'select dump('abc')'from dual returns'97,98,99' - 'c'的代码是99. – mathguy

+0

['0xFFFD'](http://www.fileformat.info/) info/unicode/char/0fffd/index.htm)只是Unicode替代字符,用于表示未知或不可表示的内容。是数据库中存储的实际值,还是仅仅是浏览器在显示时显示的内容? –

回答

0

首先将字符串转换为ASCII然后替换。

SELECT CONVERT('Ä Ê Í Õ Ø A B C D E ', 'UTF8', 'US7ASCII') 

请看以下关于不同类型字符转换的文档。 https://docs.oracle.com/cd/B28359_01/server.111/b28286/functions027.htm

然后使用REPLACE。

+0

谢谢。这个工作很完美! – sydney

+0

只有当OP询问的特定字符存在于'US7ASCII'中时,这才会起作用。如果没有,它将不会正确转换,然后替换可能不起作用。 – mathguy