我使用PL / JSON将数据从MongoDB解析到Oracle DB。这些包适用于拉丁字符。但是,当有带有中文字符的json_value时,oracle中的结果值完全被破坏(问号,符号......等)。 例如,我使用以下行来解析:
Remarks := json_ext.get_string(json(l_list.get(i)),'Remarks');
我知道json和get_string类型的函数是使用varchar而不是nvarchar。更重要的是,Oracle数据库实例支持中文(我可以看到,当我直接插入表时,不会发生损坏。只有当我解析中文json文件时它才会被破坏。) 所以我的问题是,PL / JSON软件是否支持中文字符?我是否需要自己更新包以容纳中文字符?究竟需要修复的地方?
在adidtion中,我运行了以下内容:
select value from nls_database_parameters where parameter='NLS_CHARACTERSET';
然后返回:AL32UTF8。
并不意味着我的数据库配置为UTF-8?或者还有其他事情需要检查这个pupose?
更新
受@ jsumners'的启发评论,我试图跟踪腐败来源,我从一开始就找到了它。也就是说,下面的代码段在使用PL / SJON接收htp响应之前运行:
BEGIN LOOP UTL_HTTP.read_text(l_http_response, buf); DBMS_OUTPUT.PUT_LINE(buf); l_response_text := l_response_text || buf; END LOOP; EXCEPTION WHEN UTL_HTTP.end_of_body THEN NULL; END;
行DBMS_OUTPUT.PUT_LINE(buf);
返回json的损坏字段。我不确定这是否与我发送和接收htp请求的方式有关。值得注意的是,buf是nvarchar2。