cognos 乱码的问题

服务器:Linux Version 2.6.9-55 Elsmp数据源数据库:oracle 10gCognos:Cognos8.3Cognos content store:oracle 10g首先遇到的问题不是乱码的问题,而是在cognos report studio中,建立过滤条件中含有中文的过滤器之后,报表跑出来的结果集为空。语言不太容易表达清楚,下面举个例子。...显示全部
服务器:Linux Version 2.6.9-55 Elsmp
数据源数据库:oracle 10g
Cognos:Cognos8.3
Cognos content store:oracle 10g

首先遇到的问题不是乱码的问题,而是在cognos report studio中,建立过滤条件中含有中文的过滤器之后,报表跑出来的结果集为空。语言不太容易表达清楚,下面举个例子。
城市代码城市名称
1深圳
2上海
3北京
4大连

这是一个简单的表。假设framework manager已经用这个表建立了简单的模型,并且已经发布到了cognos connection。在report studio中,以此模型作为数据源。创建filter:[城市名称]=?城市名称?。运行报表,在prompt page中,点击下拉菜单,选择城市名称“深圳”,按照逻辑来说,报表运行的结果应该是:
城市代码城市名称
1深圳

但是这个世界处处有惊喜,偏偏运行的结果是没有结果,结果集为空,只显示了表头。如下表:
城市代码城市名称

但是如果以城市代码作为过滤条件建立filter,比如:[城市代码]=?城市代码?,运行报表,在prompt page中点击下拉菜单,选择城市代码“1”,显示的结果为:
城市代码城市名称
1深圳

完全正常!!而且不管选择哪个数字,报表运行的结果都是正常的。
这个就让人纠结了......
之后又遇到了第二个问题。这个问题是第一个问题的延续。
鉴于无法以城市名称进行过滤,我就打算用城市代码,但是显示城市名称。所以写了一个数据项如下:
case [城市代码] when 1 then '深圳' when 2 then '上海' when 3 then '北京' when 4 then '大连' end
运行报表,结果如下:
城市代码城市名称数据项1
1深圳----
2上海----
3北京----
4大连----

如上图所示,数据项1显示的是乱码,但不是小横线,而是小箭头。这里不知道该怎么输入,就用横线代替了。
这个问题让我联想起了前一个问题,以城市名称建立filter之后报表无数据,是不是因为输入的城市名称经过cognos转码之后,变成了无法识别的乱码,这当然就不会返回数据啦!这可能是字符集的问题。
用PL/SQL连接oracle数据库,查看数据库的字符集:select userenv('language') from dual,显示的结果是:
SIMPLIFIED CHINESE_CHINA.AL32UTF8
以cognos启动用户登录cognos服务器,在用户主目录下,编辑.bash_profile文件,在文件的末尾加上
export NLS_LANG=SIMPLIFIED CHINESE_CHINA.AL32UTF8
运行命令source .bash_profile使更改生效,重启cognos服务。经测试,乱码问题解决了,中文无法过滤的问题也解决了。收起
参与50

查看其它 45 个回答tracyzhang的回答

tracyzhangtracyzhang网站架构师5173
看看,正有用呢
互联网服务 · 2012-01-11
浏览559

回答者

tracyzhang
网站架构师5173

tracyzhang 最近回答过的问题

回答状态

  • 发布时间:2012-01-11
  • 关注会员:3 人
  • 回答浏览:559
  • X社区推广