数据库用oracle,当php连接oracle的时候,最好指定字符集。
查PHP手册,oci_connect的第四个参数为charset,这是关键。
首先获取oracle的字符集,运行“select * from V$NLS_PARAMETERS;”,变量NLS_CHARACTERSET对应的就是我们需要的字符集,比如我这里就是“ZHS16GBK”。所以,最终的PHP代码为:
$c1 = oci_connect("scott", "tiger", $db, 'zhs16gbk');
我本地的PHP文件统一用utf-8,所以,获取的代码还要经过如下编码转换:
while ($dat = oci_fetch_row($cur)) {
print_r(iconv('gb2312', 'utf-8', $dat[0]));
}
--------------------------------
2009-6-25 更新以下文字
--------------------------------
同事说,Oracle可以按照 客户端指定的字符集 提供数据。也就是说,如果我本地PHP文件用UTF-8,那么,我在oci_connect的时候,直接指定utf-8就行了,连编码转换都省了。
$c1 = oci_connect("scott", "tiger", $db, 'UTF8');
另外,有个奇怪的问题:前面编码转换的iconv在测试机环境正常,但是传到远程就不能正常解析了,后来换成了mb_convert_encoding就可以了,代码如下:
$nickname = mb_convert_encoding($dat[0], 'utf-8', 'gbk');
可能原因在于iconv里面的第二个参数是否加了“//IGNORE”,请参考http://cn2.php.net/manual/en/function.iconv.php。有兴趣的,可以试试,我就不试了。
分享到:
相关推荐
### JDBC 连接 Oracle 字符集不同导致乱码问题解析及解决方案 #### 问题背景 在使用 JDBC(Java Database Connectivity)连接 Oracle 数据库时,可能会遇到一个常见的问题:从远程 Oracle 数据库获取的数据出现乱码...
Oracle数据库作为一款广泛应用的关系型数据库系统,其与Java应用程序的集成常常会遇到各种问题,其中之一就是字符编码导致的中文乱码问题。本文将深入探讨如何通过JDBC(Java Database Connectivity)连接Oracle远程...
本文将深入探讨Oracle数据库字符集的概念、重要性、修改过程及其潜在问题,特别是当尝试修改数据库字符集时遇到的乱码问题。 ### Oracle数据库字符集概述 Oracle数据库字符集是指用于表示数据库中所有字符数据的...
Linux 下 Oracle 中文乱码字符集设置 Linux 下的 Oracle 数据库在导入数据库时出现中文乱码问题,这是因为 Oracle 数据库中的字符集格式不支持中文。解决方法是通过修改字符集格式,将其修改成支持中文的格式,这样...
oracle修改字符集,解决乱码问题.
### Oracle 修改字符集 在Oracle数据库管理中,有时我们需要更改数据库的字符集以适应不同的语言环境或解决数据兼容性问题。本文将详细介绍如何修改Oracle数据库的字符集,并提供实际操作步骤。 #### 一、理解...
5. **Oracle连接字符串参数**:在建立Oracle连接时,可以通过连接字符串中的`NLS_LANG`参数指定字符集。尽管这改变了单个连接的字符集设置,但不会影响全局环境变量。 在实际操作中,通常会结合使用上述方法,确保...
### Oracle字符集的查看与客户端字符集的修改 #### 一、Oracle字符集的基本概念 在Oracle数据库系统中,字符集(charset)是用于表示文本数据的编码方式。正确设置和管理字符集对于确保数据的一致性和正确性至关重要...
Oracle数据库的字符集是决定数据库如何存储和处理字符数据的关键因素。在某些情况下,由于字符集不匹配,可能会导致数据导入导出时出现问题,比如提到的.dmp文件无法正常导入到其他数据库。针对这种情况,我们可以...
在处理多语言数据时,Oracle提供了NLSSORT参数来调整排序规则,同时配合使用NLS_LANG环境变量来设定客户端的字符集和排序规则,确保数据的一致性。 总结,Oracle字符集是数据库管理的关键部分,理解和正确配置字符...
Oracle 数据库字符集问题解决方案大全 Oracle 数据库字符集问题解决方案大全中,提出了 Oracle 数据库汉字显示异常的解决方案。该文档涵盖了字符集的概念、字符集的设置、字符集的影响因素、解决汉字显示异常的...
C#连接Oracle数据库字符串 C#连接Oracle数据库字符串
当从Oracle 9i升级到Oracle 10g或安装新的客户端时,如果未进行相应的字符集调整,可能导致旧有的数据库连接在新的环境中显示乱码。这是因为两个版本的客户端可能预设的默认字符集不同,如果不做统一,就会出现不...
因此,字符集的设定是个非常关键的问 题,如果设定不当,Oracle 在数据存储、数据迁移时,将会造成乱码现象和数据丢失。 本文从字符集的基本概念入手,介绍了字符集配置及查询的方法,分析了字符集出现问题的原因,...
3. **关闭所有会话**:确保没有任何用户连接到数据库,避免在执行字符集转换时出现冲突。 #### 三、字符集修改步骤 接下来,我们将详细介绍具体的字符集修改步骤: ##### 1. 登录数据库并获取当前语言环境 首先...
Oracle字符集专题是一个深入...总的来说,这个Oracle字符集专题提供了丰富的实践经验和技巧,无论是数据库管理员还是开发人员,都能从中获益,有效避免和解决字符集问题,确保Oracle数据库的稳定运行和数据的准确无误。
由于历史的原因,早期的oracle没有中文字符集(如oracle6、oracle7、oracle7.1),但有的用户从那时起就使用数据库了, 并用US7ASCII字符集存储了中文,或是有的用户在创建数据库时,不考虑清楚,随意选择一个默认的...
不当的字符集配置可能导致数据存储错误、查询结果异常或用户界面显示乱码等问题。本文将深入探讨Oracle中的中文字符集问题,包括其基本概念、常见字符集类型以及如何在不同场景下正确配置和使用字符集。 #### 一、...
Oracle数据库字符集问题解析