InfoQ

交流

讨论:向数据库写中文数据问题?

作者 hoomail 发布于 2003-08-02 分类:数据库技术

各位大侠:
你们好!我的环境是win98+apache2.0.46+php4.3.2
在win98上有一个oracle数据库,在远端的linux服务器上也有一个oracle数据库。当我用php程序向远端的oracle写中文数据后,插入到数据库中的中文数据全部是乱码。但插入到本机的oracle中却没有问题。
请问这是什么原因?复函为盼!谢谢!



逛论坛交流向数据库写中文数据问题?

加入书签
digg+,
reddit+,
del.icio.us+,
dzone+

10 条回复

回复

应该是charset设置问题,没有用过oracl.. 发表人 njhpq 发表于 08月21日
你直接在后台写入中文,也会乱码嘛 发表人 etongs 发表于 08月21日
是的。我直接把中文数据写到在php程序中.. 发表人 hoomail 发表于 08月21日
各位大侠,看看这个帖吧!帮帮我!谢谢.. 发表人 hoomail 发表于 08月22日
远端数据库的字符集设置不对。 设置的.. 发表人 Flyingcloud 发表于 08月22日
??????80 怎么不能正确显示? 发表人 Flyingcloud 发表于 08月22日
G B 231280 老大怎么回事?论坛给.. 发表人 Flyingcloud 发表于 08月22日
先谢谢各位大侠的回复!谢谢了! 请问.. 发表人 hoomail 发表于 08月22日
SIMPLIFIED CHINESE_CHINA.ZHS16GBK N.. 发表人 Flyingcloud 发表于 08月22日
我使用数据库所在机器的sqlplus试过了,.. 发表人 hoomail 发表于 08月23日
  1. 返回顶部

    Re: 向数据库写中文数据问题?

    2003年08月21日 发表人 njhpq

    应该是charset设置问题,没有用过oracle ,不清楚

  2. 返回顶部

    Re: 向数据库写中文数据问题?

    2003年08月21日 发表人 etongs

    你直接在后台写入中文,也会乱码嘛

  3. 返回顶部

    Re: 向数据库写中文数据问题?

    2003年08月21日 发表人 hoomail

    是的。我直接把中文数据写到在php程序中的insert语句中。插入后全都是乱码。不论是varchar2字段,还是大文本字段

  4. 返回顶部

    Re: 向数据库写中文数据问题?

    2003年08月22日 发表人 hoomail

    各位大侠,看看这个帖吧!帮帮我!谢谢!

  5. 返回顶部

    Re: 向数据库写中文数据问题?

    2003年08月22日 发表人 Flyingcloud

    远端数据库的字符集设置不对。
    设置的不是 CHINESE_CHINA.ZHS16C??????80

    字符集不对可麻烦了 :(

  6. 返回顶部

    Re: 向数据库写中文数据问题?

    2003年08月22日 发表人 Flyingcloud

    ??????80 怎么不能正确显示?

  7. 返回顶部

    Re: 向数据库写中文数据问题?

    2003年08月22日 发表人 Flyingcloud

    G B 231280

    老大怎么回事?论坛给过滤了?

  8. 返回顶部

    Re: 向数据库写中文数据问题?

    2003年08月22日 发表人 hoomail

    先谢谢各位大侠的回复!谢谢了!
    请问如何在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参数问题了。实验完,我会把结果写到这里的。


    再次谢谢各位大侠的帮助!

  9. 返回顶部

    Re: 向数据库写中文数据问题?

    2003年08月22日 发表人 Flyingcloud

    SIMPLIFIED CHINESE_CHINA.ZHS16GBK NT系列上安装了默认的是这个。在LINUX上RH6.2以前的版本设置不了这个,后面的版本不知道能不能设置,我没试过高版本的。

    在LINUX下,用oracle用户登陆 到控制台,执行env 就可以找到一系列的环境变量了。NLS_LANG就在里面。

    如果你的PHP和DB在一台机器上没乱码,那就不是数据库的字符集问题。如果是字符集有问题,不管PHP在哪里。汉字都无法正确显示、

    :(
    用PLUS/SQL登陆上去,插入汉字再显示正常吗?试试远程操作和在数据库服务器上的操作。看是否有什么不同

  10. 返回顶部

    Re: 向数据库写中文数据问题?

    2003年08月23日 发表人 hoomail

    我使用数据库所在机器的sqlplus试过了,插入的数据没问题。不管是使用sqlplus还是在数据库机器上执行php,插入的数据都没问题。就是在我的win98下执行php插入数据和在win98下的sqlplus插入的数据是乱码!
    我在数据库所在的机器上执行env命令,没有看到NLS_LANG这个变量,看到一个LANG变量,不知有没有关系?它是这样设置的LANG=en_US
    还有请问,我打算在linux机器上执行php,存储数据到win98的数据库里,来比较结果。(因为win98里的数据库的字符集是中文的),我这样做有意义吗?
    请各位大侠指教!




  11. 我有话要讲:(可以匿名发表, 发广告的有多远请滚多远!!!)

    昵称: 请输入验证码:


抢着回答

关于日期的问题、、

一个日期串、如下: 2003-06-22 15:24:45 如何取出 2003-06-...

高级骚扰电话[转帖]

高级骚扰电话[转帖] 高级骚扰电话 水平在北京的XX大学,大前...

请问大家这段语句拼写有误吗?

setCookie("cookie_userid",$userid,time()+3600); $checkUser...

没子查询我不懂如何删除数据了

有a,b两个表,其中b表有部分数据同a表重复,现想删除b表的重复数据...

我也有个测性格的更准

http://life.21cn.com/horoscope/ceshi/ce.html

中国男人的首选

东风铁马

如何控制alert()弹出窗口的位置?

alert()弹出窗口的默认位置是居中,请问它的位置可以任意设置吗...

用php生成excel文件问题

请问如何将从数据库中查询的数据生成excel文件.先谢了.

来自神秘古国的天籁之音

带你魂游(来自神秘古国的天籁之音) 软件大小:未知 软件语言...

如何得到图片文件的大小?

??

[]