You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP中解码360Dialog WhatsApp API Unicode转义字符问题

解决360Dialog WhatsApp Webhook希伯来语Unicode转义字符解码存储问题

问题根源

你遇到的核心问题是:360Dialog发送的JSON请求中包含JavaScript风格的\uXXXX Unicode转义字符,仅用ADODB.Stream转换字节编码为UTF-8,并未处理转义字符本身,导致数据库存储的是转义后的字符串而非实际希伯来语字符。


具体解决步骤

1. 完整解码请求体(二进制读取+转义字符处理)

先通过ADODB.Stream读取原始二进制流并转为UTF-8字符串,再手动解码\uXXXX格式的转义字符:

// 读取原始二进制请求体转UTF-8字符串
var stream = Server.CreateObject("ADODB.Stream");
stream.Type = 1; // 二进制模式
stream.Open();
stream.Write(Request.BinaryRead(Request.TotalBytes));
stream.Position = 0;
stream.Type = 2; // 文本模式
stream.CharSet = "UTF-8";
var rawJson = stream.ReadText();
stream.Close();

// 解码Unicode转义字符
function decodeUnicode(str) {
    return str.replace(/\\u([0-9a-fA-F]{4})/g, function(match, hex) {
        return String.fromCharCode(parseInt(hex, 16));
    });
}
var decodedJson = decodeUnicode(rawJson);

// 解析为JSON对象(环境支持则优先用JSON.parse,避免eval注入风险)
var jsonData = typeof JSON !== 'undefined' ? JSON.parse(decodedJson) : eval("(" + decodedJson + ")");

2. 确保数据库连接与字段配置正确

  • 数据库表对应字段的字符集必须设置为utf8mb4(兼容全Unicode字符,含希伯来语)
  • ADO连接字符串需指定UTF-8字符集,避免存储时编码转换错误:
    var conn = Server.CreateObject("ADODB.Connection");
    conn.Open("Provider=你的数据库驱动;DataBase=你的库名;User=账号;Password=密码;Charset=UTF-8");
    

3. 规避常见坑点

  • 禁止用Request.Form/Request.QueryString读取JSON请求,这类方法会用系统默认编码破坏UTF-8字符
  • 若环境支持原生JSON.parse,无需手动解码转义字符,它会自动处理\uXXXX格式
  • 插入数据时直接传入解码后的字符串,不要二次转义

内容的提问来源于stack exchange,提问作者Noam Smadja

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 18:46:18