使用 UTL_HTTP.SET_BODY_CHARSET 解决 LLM 调用乱码问题
2025-04-01 17:24 AlfredZhao 阅读(323) 评论(0) 收藏 举报UTL_HTTP.SET_BODY_CHARSET('UTF-8') 是用来设置 HTTP 请求的 正文字符集(body charset),即指定发送 HTTP 请求时请求体内容的字符编码方式。字符集用于告诉接收方如何解码请求体中的内容,确保在客户端和服务器之间传输时正确处理字符编码。
1. 意义:
- 
通过指定 UTF-8字符集,你告诉数据库或客户端在发送 HTTP 请求时,正文内容应使用 UTF-8 编码方式。这对于处理包含中文、日文等多字节字符集的文本内容尤其重要,确保在请求过程中不会出现乱码。
- 
举个例子,假设你通过 UTL_HTTP向外部接口发送带有中文的 HTTP 请求体。如果不指定字符集,可能会导致发送的数据在接收端被错误解码,导致乱码,而指定UTF-8则可以避免这个问题。
2. 默认字符集:
- 如果不调用 UTL_HTTP.SET_BODY_CHARSET来显式指定字符集,Oracle 默认使用 ISO-8859-1 字符集(也称作 Latin-1)来发送 HTTP 请求体。这意味着,如果请求体包含非 ASCII 字符(例如中文字符),会因为字符集不匹配而导致乱码。
示例:
BEGIN
   -- 设置字符集为 UTF-8
   UTL_HTTP.SET_BODY_CHARSET('UTF-8');
   
   -- 创建并发送 HTTP 请求
   -- 这里可以继续调用其他 UTL_HTTP 相关函数,如 UTL_HTTP.REQUEST,DBMS_VECTOR_CHAIN.UTL_TO_GENERATE_TEXT等
END;
总结:
- 指定字符集:确保 HTTP 请求体正确编码,特别是当数据包含非 ASCII 字符(如中文)时。
- 默认字符集:如果不指定,Oracle 默认使用 ISO-8859-1,这可能导致非 ASCII 字符无法正确传输。
    AlfredZhao©版权所有「从Oracle起航,领略精彩的IT技术。」
转载请注明原文链接:https://www.cnblogs.com/jyzhao/p/18804551/shi-yong-utlhttpsetbodycharset-jie-jue-llm-diao-yo
   
转载请注明原文链接:https://www.cnblogs.com/jyzhao/p/18804551/shi-yong-utlhttpsetbodycharset-jie-jue-llm-diao-yo
👋 感谢阅读,欢迎关注我的公众号 「赵靖宇」
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号