Oracle HTTP 오류 코드

plsql 로 웹 서 비 스 를 쓰 면 중국어 오류 가 발생 할 수 있 습 니 다.
원인:
   데이터베이스 인 코딩 은 ZHS16GBK,HTTP 메시지 인 코딩:UTF-8 입 니 다.UTL_HTTP 패키지 의 WRITETEXT 프로 세 스 는 문 자 를 데이터베이스 인 코딩 으로 변환 합 니 다.
조치:
   데 이 터 는 varcahr 2 대신 raw 를 사용 하고 clob 대신 blob 를 사용 합 니 다.
   (1)메시지 발송 시:       
VV_REQ_TEXT:=CONVERT(VV_REQ_TEXT,'UTF8','ZHS16GBK');
VV_REQ_RAW:=UTL_RAW.CAST_TO_RAW(VV_REQ_TEXT);
--UTL_HTTP.WRITE_TEXT(HTTP_REQ, VV_REQ_TEXT); --  WRITE_RAW
UTL_HTTP.WRITE_RAW(HTTP_REQ, VV_REQ_RAW);

   
   (2)읽 을 때 도 마찬가지,READTEXT 를 READ 로 변경RAW,백업 시트 저장 시 clob 형식 에서 blob 형식 으로 변경
   varchar 2 를 사용 할 때'|'연산 자 는 기본적으로 인 코딩 을 한 번 더 돌리 고 바 이 트 를 잃 어 버 립 니 다.즉,:
       CONVERT(VV_REQ_TEXT,'UTF 8','ZHS16GBK')|''는 바이트 가 손실 되 므 로 문자열 을 맞 추고 변환 해 야 합 니 다.write_text 도 자동 으로 데이터베이스 인 코딩 에 따라 한 번 더 인 코딩 되 고 바이트 도 잃 어 버 립 니 다.

좋은 웹페이지 즐겨찾기