问题重现:
安装的是oracle 11g数据库,支持字符集是GBK,系统字符集是UTF-8,通过sqlplus insert数据(中文汉字)可以正常显示中文,从前端客户端(apache+php)插入中文数据,在数据库中查看都是乱码"?"。
可怜我的疼呀,眼看第二天就要上线了,数据库的编码的又出了问题;更改的系统字符集,强制性在php插入时改变默认字符,测试还是乱码。就在这里查呀查呀,百度,谷歌不停的搜呀,都没有搜到想要的答案
冷静下来思考后,心想问题是不是出在oracle 的NLS_LANG参数设置问题上。
sqlplus下执行:select userenv('language') from dual;查看oracle字符集,果真是NLS设置问题,赶快把NLS_LANG的字符集设置和oracle字符集相同,在通过前端插入时,一切OK.
NLS_LANG 未设置或设置错误,都会导致插入中文乱码问题,排除这方面的问题一定要晓得字符集的排除过程。
1. 未设置:向oracle插入数据时,数据库会寻找系统中的字符编码,然可已系统的编码方式插入数据库。
阅读(45150) | 评论(0) | 转发(1) |