DataTables SearchBuilder符号替换问题:Ё转Е、Й转И如何修复?
修复DataTables SearchBuilder的西里尔字符替换问题
问题根源在于SearchBuilder默认的字符串过滤器会对部分西里尔字符做归一化处理(如Ё→Е、Й→И、ь→и),而DataTables主搜索功能的字符处理逻辑与之不同,因此能保留原符号。以下是具体修复方案:
1. 自定义SearchBuilder过滤器类型
创建一个自定义过滤器,跳过不必要的字符归一化,复用DataTables主搜索的字符处理逻辑:
// 注册自定义UTF-8字符串过滤器 $.fn.dataTable.searchBuilder.filters.stringUtf8 = $.fn.dataTable.searchBuilder.filters.string.extend({ // 覆盖过滤器逻辑,使用DataTables原生搜索工具 filter: function(data, filterVal) { return $.fn.dataTable.util.search( data, filterVal, false, // 禁用正则 false, // 禁用智能搜索 false, // 禁用大小写不敏感(若需保留可设为true) false // 禁用转义正则 ); }, // 确保获取输入框原始值,不做修改 getValue: function(elem) { return elem.val(); } });
2. 在DataTables配置中使用自定义过滤器
初始化表格时,将目标列的searchBuilderType指定为我们创建的stringUtf8类型:
$('#your-table-id').DataTable({ serverSide: true, ajax: '/your-api-endpoint', columns: [ { data: 'columnName', type: 'string-utf8', searchBuilderType: 'stringUtf8' // 应用自定义过滤器 }, // 其他列配置... ], searchBuilder: { enabled: true, // 可选:配置其他SearchBuilder选项 } });
3. 验证修复效果
完成配置后,在SearchBuilder输入框中输入「чёрный」,查看POST请求体,此时应能看到原始字符而非替换后的「черныи」,服务器端也会收到正确的搜索参数。
内容的提问来源于stack exchange,提问作者EarthLing
相关产品推荐
相关产品推荐

