PHP - Oracle - 特殊字符 - NLS_LANG?

时间:2014-02-28 09:05:51

标签: php ajax joomla oracle10g xampp

当我将sqlplus(windows 7,cmd)连接到oracle数据库并使用umlauts(ü,ö,ä)进行查询时,我没有收到任何回复。

我查询了NLS_LANG并得到了回复:

AMERICAN_AMERICA.WE8ISO8859P1

oracle数据库在linux发行版上运行。所以我打开了cmd框并输入了

set NLS_LANG=AMERICAN_AMERICA.WE8ISO8859P1

并重复查询 - 再一次没有成功。然后我得到了以下提示:

set NLS_LANG=German_Germany.WE8PC850'

这最终奏效了。但我想在joomla中使用查询语句。现在我不知道如何处理这个问题。我使用oci8和oracle10g。有什么想法吗?

提前致谢。

2 个答案:

答案 0 :(得分:0)

根据Oracle文档,您可以通过在Linux中运行'setenv'命令永久设置NLS_LANG(而不必在每次连接时设置它):

setenv NLS_LANG German_Germany.WE8PC850

链接:http://docs.oracle.com/cd/E12102_01/books/AnyInstAdm784/AnyInstAdmPreInstall18.html

如果您有权访问服务器,这当然有效。如果你不这样做,可能有一些方法在每次Joomla连接到数据库后调用'set NLS_LANG = German_Germany.WE8PC850',但我对Joomla一无所知,所以我无法帮助你!

答案 1 :(得分:0)

我在@ddallala的帖子中找到了解决方案。这是链接:utf8_decode

utf8_decode($_POST['search_name_with_special_character'])

是解决方案。