我遇到了一个有奇怪行为的Oracle表单。当它从Oracle 10gR2转换为Oracle 11gR1时,它似乎失去了西班牙语字符“ñ”。这似乎只发生在文本字段提示中。表单中的其余元素似乎正确显示了字符。有什么可能导致这个或什么检查来修复它的任何建议?我已经检查过安装的字体是否支持此字符,并且NLS相关设置看起来没问题。
答案 0 :(得分:1)
好吧,经过一整天试图确定问题是什么,似乎最简单的答案是正确的答案:这个表单的原始开发人员似乎想要确保该字符显示正确并且他有一个坏的设置,所以他使用SET_ITEM_PROPERTY函数设置文本,并使用CHR函数来转义字符。如下所示:
SET_ITEM_PROPERTY('BLOCK.PASS_FIELD', PROMPT_TEXT, 'Contrase'||CHR(241)||'a: ');
对于在其属性中标题为“Contraseña:”的字段的提示。
在当前设置中,它可以工作,但在这个新的环境中,我们使用UTF8编码,字母“ñ”的代码完全改变。仅仅为了完整起见,utf8中的代码将是CHR(50097)。但我建议最好只是让你的DBA或SYSADMIN修复NLS设置,这样你就可以使用提示或字段属性,而不必让这个“有创意”并让其他开发人员浪费太多时间。 / p>
我从来没有检查过这个,因为属性似乎设置正确,但是创建一个具有相同属性的新字段的简单测试最终告诉我,问题是特定于4个字段的已经创建并搜索基于代码的属性更改导致我发现这是问题所在。所以我在这里留下这个答案,希望别人能节省几个小时的时间,先检查一下这个简单的答案。