使用ajax在oracle中存储中文字符不起作用

我想使用ajax概念将html页面中的中文字符存储到oracle数据库中。

Front end : HTML & PHP. Back end : Oracle 11G. 

Oracle特点:

 NLS_LANGUAGE = AMERICA NLS_CHARACTERSET = WE8MSWIN1252 NLS_NCHAR_CHARACTERSET = AL16UTF16 

当我尝试使用表单存储中文字符提交它的存储成功,如果我尝试通过ajax存储我在数据库中得到奇怪的字符。

在ajax页面中我添加了这一行:

 header("Content-type: text/html; charset=utf-8"); 

并在html页面中添加了以下行:

  

我已经经历了很多堆栈溢出建议但没有运气。

请告诉我如何解决这个问题。

提前致谢。

代码: HTML代码。

    Test   function addForm() { var english=document.getElementById('txt_english').value; var id=document.getElementById('txt_id').value; var chinese=document.getElementById('txt_chinese').value; $.ajax({ type: "POST", async: false, url: "ajax/ajax_add_form.php", data: { english: english, chinese: chinese, id: id } }).done( function (html){ alert(html); }); }    

PHP代码: ajax / ajax_add_form.php

  

在此处输入图像描述

我的问题:

即使它以另一种格式存储,当我回到网页时,它正常工作并显示。

我的问题是另一个名为敏捷的工具也访问相同的数据,因此没有发生转换它显示数据库中存储的数据格式。

因此,我希望存储与用户输入完全一致,无需任何转换。

确保您已将OCI连接设置为使用UTF-8:

 oci_connect($username, $password, $connection_string, 'UTF8'); 

这告诉Oracle您正在发送和期望接收的字符集编码。 然后Oracle自动负责服务器和客户端之间的“转换”。 从文档 (强调我的):

确定Oracle客户端库使用的字符集。 字符集不需要与数据库使用的字符集匹配。 如果不匹配,Oracle将尽力将数据转换为数据库字符集或从数据库字符集转换数据 。 根据字符集,这可能无法提供有用的结果。 转换还会增加一些时间开销。

您需要注意的唯一事情是您的PHP应用程序将所有内容视为UTF-8。

尝试

  

代替