php从Oracle中读取汉字乱码

「已注销」 2016-08-29 01:19:13
Oralce编码信息如下:
SQL> select * from nls_database_parameters;
PARAMETER VALUE
------------------------------ --------------------------------------------------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CHARACTERSET ZHS16GBK
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_RDBMS_VERSION 10.2.0.4.0
现在用php读出其中nvarchar2()字段,该字段保存的是汉字,读出后是乱码,请问该怎么解决呢
...全文
357 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2016-08-29
  • 打赏
  • 举报
回复
在 $tns 中计入你需要的字符集,比如 'oci:dbname=//10.34.137.18:1521/rpgd;charset=zhs16gbk' utf-8 应该怎么写,你自己试试 'oci:dbname=//10.34.137.18:1521/rpgd;charset=utf-8' 还是 'oci:dbname=//10.34.137.18:1521/rpgd;charset=utf8'
「已注销」 2016-08-29
  • 打赏
  • 举报
回复
引用 1 楼 xuzuning 的回复:
NLS_CHARACTERSET ZHS16GBK 这是 gbk 编码 NLS_NCHAR_CHARACTERSET AL16UTF16 这是 unicode 编码 你用的是哪一个? 一般是在连接时声明你需要的编码
我的连接声明如下: $conn = new PDO("oci:dbname=" . $tns, $db_username, $db_password); $sql = "查询语句"; $result = $conn->prepare($sql); $result->execute(); $result->bindColumn("TITLE", $tilte, PDO::PARAM_STR); $result->fetch(PDO::FETCH_BOUND); php文件使用的是utf-8无BOM编码 oracle中的数据格式因为涉及到生产数据,不太好改,希望能通过php读取的时候做个什么操作可以把读出的中文字符转换为可显示的
xuzuning 2016-08-29
  • 打赏
  • 举报
回复
NLS_CHARACTERSET ZHS16GBK 这是 gbk 编码 NLS_NCHAR_CHARACTERSET AL16UTF16 这是 unicode 编码 你用的是哪一个? 一般是在连接时声明你需要的编码

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧