我想通过POST将UTF8 json字符串通过utl_http发送到node.js服务器。发送字符串PL/SQL:使用UTF8字符串的UTL_HTTP POST导致破损字符
["Sant Julià de Lòria"]
没有如约到达
["Sant Juli� de L�ria"]
的PL/SQL代码是这样:
FUNCTION http_post_varchar(
p_url VARCHAR2,
p_request_body VARCHAR2)
RETURN VARCHAR2
AS
req UTL_HTTP.REQ;
resp UTL_HTTP.RESP;
value VARCHAR2(32767); -- URL to post to
v_url VARCHAR2(200) := p_url;
-- Post Parameters
v_param VARCHAR2(32767) := p_request_body;
v_param_length NUMBER := length(v_param);
BEGIN
req := UTL_HTTP.BEGIN_REQUEST (url=> v_url, method => 'POST');
UTL_HTTP.SET_HEADER (r => req,
name => 'Content-Type',
value => 'application/json;charset=UTF-8');
UTL_HTTP.SET_HEADER (r => req,
name => 'Content-Length',
value => v_param_length);
UTL_HTTP.WRITE_TEXT (r => req,
data => v_param);
resp := UTL_HTTP.GET_RESPONSE(req);
LOOP
UTL_HTTP.READ_LINE(resp, value, TRUE);
END LOOP;
UTL_HTTP.END_RESPONSE(resp);
RETURN 'OK';
EXCEPTION
WHEN UTL_HTTP.END_OF_BODY THEN
UTL_HTTP.END_RESPONSE(resp);
RETURN 'OK';
END http_post_varchar;
什么是您的数据库字符集?什么是你的会话nls_lang字符集? –
字符集:AL32UTF8 NLS_CHARACTERSET:GERMAN –
您确定您正在以UTF8字符串的形式阅读响应吗?它看起来好像你试图读取一个8位字符集的UTF8字符串('ò'=>'�') –