【问题标题】:Oracle Forms Text Field Prompt and Spanish CharactersOracle Forms 文本字段提示和西班牙语字符
【发布时间】:2023-03-28 23:55:02
【问题描述】:
我遇到了一个具有奇怪行为的 Oracle 表单。在将其从 Oracle 10gR2 转换为 Oracle 11gR1 时,它似乎丢失了西班牙语字符“ñ”。这似乎只发生在文本字段提示中。表单中的其余元素似乎可以正确显示字符。关于可能导致此问题的原因或检查以解决此问题的任何建议?我已经检查了安装的字体是否支持这个字符,并且 NLS 相关设置看起来没问题。
【问题讨论】:
标签:
plsql
oracle11g
oracleforms
【解决方案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 设置,这样您就可以使用提示或字段属性,而不必获得这个“创意”并让其他开发人员浪费太多时间。
我从来没有检查过这个,因为属性似乎设置正确,但是创建具有相同属性的新字段的简单测试最终表明问题是特定于 4 个字段的已经创建并搜索基于代码的属性更改使我发现这是问题所在。所以我把这个答案留在这里,希望其他人能节省几个小时的时间,先检查一下简单的答案。