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

JQuery Base64编码特殊字符导致FPDF输出乱码问题求助

解决瑞典特殊字符(å/ä/ö)在base64编码解码后的乱码问题

看起来你遇到的核心问题是字符编码不一致导致的乱码,尤其是在前端编码、AJAX传输、后端解码这三个环节中,UTF-8的处理没有贯穿始终。我来一步步帮你解决:

1. 前端AJAX提交的问题:避免手动拼接数据字符串

你现在直接把所有参数拼接成字符串的方式,很容易因为特殊字符的自动转义导致编码混乱。jQuery的AJAX支持直接传入对象形式的data,它会自动帮你处理UTF-8编码,避免手动拼接的错误:

// 替换原来的data拼接逻辑
$.ajax({
    url: frontend_ajax_object.ajaxurl,
    type: "POST",
    contentType: "application/x-www-form-urlencoded; charset=UTF-8",
    data: {
        action: 'wpgv_doajax_pdf_save_func',
        nonce: nonce,
        template: templates_id,
        'for': forName,  // 注意for是JS关键字,加引号避免语法问题
        from: fromName,
        value: voucherValue,
        message: message,
        expiry: expiry,
        code: code,
        firstname: firstName,
        lastname: lastName,
        email: email,
        address: address,
        pincode: pincode,
        paymentmethod: paymentMethod
    },
    success: function(a) {
        window.location.replace(a);
    },
    error: function() {
        alert('Error occured');
    }
});

同时,确认你的base64编码插件支持UTF-8。如果用的是jquery.base64.js,需要在编码时明确指定UTF-8:

fromName = $.base64.encode($('#voucherName').val(), 'utf8');

2. 后端PHP解码的优化:确保UTF-8贯穿处理

后端的sanitize_text_field函数可能会对UTF-8特殊字符造成破坏,而且要先确保POST数据本身是UTF-8编码的。修改你的解码逻辑:

// 先获取并验证POST数据的编码,确保是UTF-8(适配服务器默认编码非UTF-8的情况)
$encoded_from = $_POST['from'] ?? '';
if (!mb_check_encoding($encoded_from, 'UTF-8')) {
    $encoded_from = mb_convert_encoding($encoded_from, 'UTF-8', 'ISO-8859-1');
}

// 先解码,再做安全处理(用wp_strip_all_tags替代sanitize_text_field,更兼容UTF-8)
$from = base64_decode($encoded_from);
$from = wp_strip_all_tags($from);

3. 关键收尾:FPDF输出PDF时的字体支持

即使前面的编码解码都正确了,如果FPDF没有使用支持UTF-8的字体,瑞典特殊字符还是会显示乱码。你需要给FPDF配置支持Unicode的字体:

  • 可以使用FPDF的utf8扩展(针对旧版FPDF),或者直接加载如Arial Unicode MS这类支持Unicode的字体:
// 在FPDF初始化后添加字体配置
$pdf->AddFont('ArialUnicodeMS', '', 'ArialUnicodeMS.php');
$pdf->SetFont('ArialUnicodeMS', '', 12);

这样处理后,Björn这类含特殊字符的姓名就能在PDF中正确显示了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:46:00