向大家请教有关Oracle中文支持的问题,困扰我很久了 :-(

net_wolf 2000-07-02 09:49:00
向大家请教有关Oracle中文支持的问题,困扰我很久了 :-(

我在solaris 2.6下安装了oracle8i,字符集选的是zhs16cgb231280。
sqlplus里面操作中文正常,而cgi程序不能正常存取中文,取出的中文显示
为??,插入的汉字数据变成了ascii码。

cgi的环境显示的nls_lang参数和db一样是zhs16cgb231280,cgi是php,
3.0.16和4.0.1都有这样的问题。
...全文
215 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
net_wolf 2000-07-08
  • 打赏
  • 举报
回复
问题已经解决,oracle 用us7ascii字符集,一切正常了
net_wolf 2000-07-06
  • 打赏
  • 举报
回复
putenv("nls_lang=_china.zhs16cgb231280");
设置了,也不好用
详细的问题如下:


sqlplus操作中文完全没有问题,window98下的client端tnsping也没有问题,

最新版本php4.0.1pl2
编译参数
./configure --enable-experimental-zts --with-mysql=no \
--with-nsapi=/usr/netscape/suitespot/ \
--with-oracle=/u01/app/oracle/product/8.1.5 \
--with-oci8=/u01/app/oracle/product/8.1.5 \
--enable-libgcc --enable-sigchild

oracle用户的配置
ORACLE_BASE=/oracle/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/8.1.5
ORACLE_SID=oracle8
NLS_LANG=american_america.ZHS16CGB231280
ORA_NLS33=$ORACLE_HOME/ocommon/nls/admin/data
export ORACLE_HOME ORACLE_BASE ORACLE_SID NLS_LANG ORA_NLS33
-------------------------
执行程序:
-------------------------
<?php
/* OCIDefineByPos example thies@digicol.de (980219) */

putenv("LD_LIBRARY_PATH=/oracle/app/oracle/product/8.1.5/lib");
putenv("NLS_LANG=american_america.ZHS16CGB231280");
putenv("ORACLE_BASE=/oracle/app/oracle");
putenv("ORACLE_HOME=/oracle/app/oracle/product/8.1.5");
putenv("ORACLE_SID=oracle8");
putenv("ORA_NLS33=/oracle/app/oracle/product/8.1.5/ocommon/nls/admin/d
ata ");


$conn = OCILogon("scott","tiger");

$stmt = OCIParse($conn,"select empno, ename from emp");

/* the define MUST be done BEFORE ociexecute! */

OCIDefineByName($stmt,"EMPNO",&$empno);
OCIDefineByName($stmt,"ENAME",&$ename);

OCIExecute($stmt);

while (OCIFetch($stmt)) {
echo "empno:".$empno."\n";
echo "ename:".$ename."\n";
}

OCIFreeStatement($stmt);
OCILogoff($conn);
?>
-----------------------------------
SQL> select * from emp;

EMPNO ENAME JOB MGR HIREDATE

---------- -------------------- ------------------ ---------- --------
-
SAL COMM DEPTNO
---------- ---------- ----------
1 --中文--

SQL>

------------------------------

php3.0.16也有这个问题
net_wolf 2000-07-05
  • 打赏
  • 举报
回复
现在php和oracle无法连通了,5555

ORA-03106 少见的错误,怎么办? 少见的错误,怎么办?
Warning: OCISessionBegin: ORA-03106: fatal two-task communication prot
ocol error in /opt/users/cgi-b

php程序的ocilogon调用出现这样的问题,怀疑系统问题,
重新安装solaris2.6 & oracle 8i ,
照旧这样!@#


net_wolf 2000-07-05
  • 打赏
  • 举报
回复
重新安装
web server 是 Netscape Enterprise Server 4.0
使用oracle用户,设置字符集为简体中文。
能够登录了,可是又有新的问题了


Tommy Chang 2000-07-05
  • 打赏
  • 举报
回复
建议一:重装apache、php4,将oracle联接添加进来
建议二:将nobody的环境变量列出来(在apache的配置里,默认的是nobody用户起进程的)
建议三:检查建立数据库是否正常
建议四:检查oracle的listener配置和tns配置(这里可能出错的情况比较多)
建议五:如果是网络环境,请检查网络配置

暂时想不到还有什么办法.
:)
afirebird 2000-07-04
  • 打赏
  • 举报
回复
哈哈,终于碰到一个我会的问题,
你应该在cgi源码中加一句:
putenv("nls_lang=_china.zhs16cgb231280");
shshsh_0510 2000-07-04
  • 打赏
  • 举报
回复
哈哈,终于碰到一个我会的问题,
可惜让afirebird给说了.

34,575

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧