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()字段,该字段保存的是汉字,读出后是乱码,请问该怎么解决呢
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()字段,该字段保存的是汉字,读出后是乱码,请问该怎么解决呢
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读取的时候做个什么操作可以把读出的中文字符转换为可显示的
'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'