正如一位大牛说的,最让程序员头疼的事就是文字编码问题,西方英文世界很多解决方案都是以他们为中心开发,他们没问题,拿到天朝世界,问题就来了,本问题困扰了我一段时间,php官网的oci介绍并没有关于怎么解决中文乱码问题。
解决重点是在连接Oracle时直接指定编码格式,而且特别注意是填写utf8,而不是常见的utf-8,
$conn = oci_connect("C##SCOTT", "tiger",$db,'utf8');
Oracle就会根据指定的编码格式输出给客户端,而不需要修改环境变量NLS_LANG和注册表中的NLS_LANG键值,否则反而会造成数据库无法运行。没想到解决起来就是这么简单,而没有想象那么复杂,问题是天煞的你能想到是utf8而不是utf-8吗?
另外在网页中,需要将得到的数据用htmlspecialchars函数处理,最好用该函数,而不是htmlentities,否则网页显示又是乱码。
示例代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<htm