use*_*774 2 php oracle encoding
您好,这是昨天的后续调查,
我有一个解析网站的PHP脚本。我现在要在UTF-8中获取字符串,我想将这些字符串插入使用以下代码的Oracle数据库中:
NLS_NCHAR_CHARACTERSET = AL16UTF16
NLS_CHARACTERSET = EE8ISO8859P2
Run Code Online (Sandbox Code Playgroud)
我已经尝试过:
$rep = iconv("UTF-8","AL-16UTF-16",$string);
Run Code Online (Sandbox Code Playgroud)
//失败-产生?? 数据库或脚本中的错误因“错误的字符集”而失败
我也尝试过
$rep = iconv("UTF-8","ISO-8859-2",$string);
$rep1 = iconv("UTF-8","AL-16UTF-16",$rep);
Run Code Online (Sandbox Code Playgroud)
与上述相同...失败?? 在数据库中。
有人知道下一步该怎么做吗?
OCI驱动程序隐式处理字符集转换。连接时,请确保将字符集设置为UTF-8:
oci_connect($username, $password, $connection_string, 'UTF-8');
Run Code Online (Sandbox Code Playgroud)
这告诉OCI期望您提供从数据库字符集转换的UTF8格式的字符串和UTF8的结果集。从手册(重点是我的):
确定Oracle客户端库使用的字符集。字符集不需要与数据库使用的字符集匹配。如果不匹配,Oracle将尽最大努力在数据库字符集之间来回转换数据。根据字符集,这可能不会给出可用的结果。转换也增加了一些时间开销。
这意味着,假设您要输入的字符串位于UTF8中,则根本不需要使用iconv()。只需让OCI为您处理即可。