2012-04-19 50 views
0

我正在开发一个带有oracle数据库的.net Windows应用程序。我们的要求是用UI上的¼(ascii 188)替换“&#188”并保存在oracle表中。但是,在替换值后,它在UI和Oracle表中显示“反向”问号,当我使用pl/sql开发人员查询表时,它将存储为问号。在Oracle中存储特殊字符并使用.net应用程序

有些人可以处理这类问题吗?

谢谢, H N MISHRA

回答

0

ASCII从0到127没有ASCII字符188有一个Unicode字符U+00BC = 4,1和00BC六角的确是188(十进制)。这就是答案的提示:使用Unicode,那很简单。幸运的是.Net已经使用Unicode,而在Oracle中它只是一个简单的设置。

+0

有超过350个html charcaters可以用其他值替换,我们保留Oracle表中的所有这些来替换那些动态的。当我将这些值从记事本复制到oracle表中时,¼转换为“?”。而在一些发展中的机器上,.net界面显示正确的值,即更换后的1/4,但是他们的pl/sql开发人员也显示“?”在桌子里。但在我的机器上.net界面和pl/sql开发人员显示“?”。窗口中是否有任何设置来显示这些特殊字符的正确值? – 2012-04-19 09:23:31

+0

@ H.N.Mishra:请勿使用记事本检查特殊字符。您的问题可能是由记事本引起的。 – Codo 2012-04-19 10:19:13

+0

@Codo:记事本没有任何问题。它完全是Unicode,就像所有的Windows组件一样。因此它甚至没有“特殊”字符的概念。 “U + 00BC”只是一个像“U + 007C”或“U + 8BFE”这样的字符。另一方面,Oracle使用多种不同的字符编码,如Latin-1。 – MSalters 2012-04-19 10:36:37

0

看来您的Oracle数据库设置的字符集不包含¼字符。 (我假设你指的是Unicode代码点188,因为ASCII字符集不包括1/4)。

很可能,您需要转换数据库的字符集。我推荐AL32UTF8(UTF-8),它支持完整的Unicode范围。

有一个Oracle文档描述了character set migration

+0

Charcater用Oracle DB设置很好,因为它在其他开发者机器上正确显示。我相信它需要改变以显示正确的客户端机器的本地设置? – 2012-04-19 09:50:55

+0

@ H.N.Mishra:如果是这种情况,那么我认为你的问题不在于Oracle或访问数据库的.NET代码(可能是ADO.NET)。因为他们基本上使用Unicode,完全意识到字符集并且不引入问题。请描述从数据库到用户界面的所有工具的完整管道。管道中的任何步骤可能已更改为¼个字符。 – Codo 2012-04-19 10:20:49