java从来自数据库的NCR值中以字符形式检索值
我面临着从resultset中以字符形式检索值的问题。结果集以NCR格式显示值(例如,&;#21488;&;#21271;)而不是性格(例如:台北). 我不知道如何从resultSet中获取角色
我从resultSet中获得了价值
while (resultSet.next()) {
resultSet.getString(1); // this value is coming as NCR / or some other text
}
我尝试过一种方法,但我有问题
public static String ConvertDecimalNCRToString(String hex)
{
String myString = hex.replace("&#", "");
String[] split = myString.split(";");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < split.length; i++)
{
sb.append((char)Integer.parseInt(split[i]));
}
return sb.toString();
}
如果我的字符串是“&;#21488;&;#21271;”然后程序运行正常,但字符串也可以包含NCR值以外的其他值,如“stre1234&;21488&;21271;”在这种情况下,上述方法失败。任何人都可以提出一些好的方法来实现它。我还想知道是否有其他方法可以直接从resultSet而不是NCR值中获取字符值
提前谢谢
# 1 楼答案
如果数据存储在数字字符引用中,可以使用the UTL_I18N.UNESCAPE_REFERENCE function将其转换回字符作为查询的一部分:
当然,您的客户机需要能够处理Unicode字符,您的会话也需要兼容。例如,在带有
export LANG="en_US.iso8859-1"
和export NLS_LANG="ENGLISH_AMERICA.US7ASCII"
的Linux PuTTY会话中,通过SQL*Plus运行的查询显示:更改
export NLS_LANG="ENGLISH_AMERICA.UTF8"
会得到:如果我通过Java程序运行相同的查询,我会得到:
通过
export LANG="en_US.utf8"
(或者说,ja_JP.utf8
)获得:其他客户端可能需要不同的设置,例如操作系统或Java语言环境You can read more in the globalisation guide
您可能还想首先检查存储的值是否真的应该转义