关于日期的问题、、
一个日期串、如下: 2003-06-22 15:24:45 如何取出 2003-06-...
作者 hoomail 发布于 2003-08-02 分类:数据库技术
各位大侠:
你们好!我的环境是win98+apache2.0.46+php4.3.2
在win98上有一个oracle数据库,在远端的linux服务器上也有一个oracle数据库。当我用php程序向远端的oracle写中文数据后,插入到数据库中的中文数据全部是乱码。但插入到本机的oracle中却没有问题。
请问这是什么原因?复函为盼!谢谢!
逛论坛交流:向数据库写中文数据问题?
应该是charset设置问题,没有用过oracle ,不清楚
你直接在后台写入中文,也会乱码嘛
是的。我直接把中文数据写到在php程序中的insert语句中。插入后全都是乱码。不论是varchar2字段,还是大文本字段
各位大侠,看看这个帖吧!帮帮我!谢谢!
远端数据库的字符集设置不对。
设置的不是 CHINESE_CHINA.ZHS16C??????80
字符集不对可麻烦了 :(
??????80 怎么不能正确显示?
G B 231280
老大怎么回事?论坛给过滤了?
先谢谢各位大侠的回复!谢谢了!
请问如何在linux下看oracle数据库的字符集设置????
我首先使用oracle DBA Studio看了一下两边数据库的初始化参数,他们有很多NLS_*参数,但全部都使用了默认值。
我又打开注册表,在oracle中又发现了一个NLS_LANG值,它被设置为SIMPLIFIED CHINESE_CHINA.ZHS16GBK
请问我在linux下如何看NLS_LANG值?在oracle DBA Studio中看到的数据库初始化参数中怎么没有这个值?这几个参数到底哪个代表字符集?
还有一个值得注意的是,我把php拿到远端的数据库上执行(Web服务器和数据库在同一机器),插入的数据没有乱码。
只有php在我的本地机器上运行去存储远端的数据库时才出现乱码!php和数据库在一个机器上时不会乱码。
我下一步打算在远端的linux上执行php去存储我win98的数据库。因为win98的数据库设置了NLS_LANG=SIMPLIFIED CHINESE_CHINA.ZHS16GBK(目前还不知道linux上的数据库设置了没有,不会看)如果存储的没有问题,那么就是NLS_LANG参数问题了。实验完,我会把结果写到这里的。
再次谢谢各位大侠的帮助!
SIMPLIFIED CHINESE_CHINA.ZHS16GBK NT系列上安装了默认的是这个。在LINUX上RH6.2以前的版本设置不了这个,后面的版本不知道能不能设置,我没试过高版本的。
在LINUX下,用oracle用户登陆 到控制台,执行env 就可以找到一系列的环境变量了。NLS_LANG就在里面。
如果你的PHP和DB在一台机器上没乱码,那就不是数据库的字符集问题。如果是字符集有问题,不管PHP在哪里。汉字都无法正确显示、
:(
用PLUS/SQL登陆上去,插入汉字再显示正常吗?试试远程操作和在数据库服务器上的操作。看是否有什么不同
我使用数据库所在机器的sqlplus试过了,插入的数据没问题。不管是使用sqlplus还是在数据库机器上执行php,插入的数据都没问题。就是在我的win98下执行php插入数据和在win98下的sqlplus插入的数据是乱码!
我在数据库所在的机器上执行env命令,没有看到NLS_LANG这个变量,看到一个LANG变量,不知有没有关系?它是这样设置的LANG=en_US
还有请问,我打算在linux机器上执行php,存储数据到win98的数据库里,来比较结果。(因为win98里的数据库的字符集是中文的),我这样做有意义吗?
请各位大侠指教!
10 条回复
回复