我到处寻找并用谷歌搜索/stackoverflown,但我找不到解决方案。请帮忙!
我正在将 jQuery 数据表与 columnFilter 插件一起用于 Ajax 源表。我正在尝试select
使用选项实现过滤器multiple
。
问题是此选项包含特殊字符(中文、德文、日文、俄文等)。Now when the multiple
option is off. json 请求的处理没有任何问题(我得到了提交的确切字符,并使用它们来获取所需的数据库条目,其中包括所有这些语言的条目)。但是,当该multiple
选项打开时,所有特殊字符都会被转义。
基本上是选项
"简体中文 (简体中文)"
处理为 json 变成
"中文%20简体%20%28%u7B80%u4F53%u4E2D%u6587%29"
在后端,我使用以下代码:
.
.
.
if params[:sSearch_2].present?
langs = get_items_from_multiple(params[:sSearch_2])
unless langs == []
cards = cards.where(:language => langs)
end
end
.
.
.
def get_items_from_multiple(request)
require "cgi"
itemList = request.match(/\^\((.+)\)\$/) #Extract request from within ^( )$
if itemList.nil?
itemList = []
else
itemList = itemList[1].split("|") #Split options
escaped = []
itemList.each do |item|
escaped << CGI.unescape(item).gsub("\\", "") #trying to unescape
end
itemList = escaped
end
itemList
end
现在该CGI.unescape...
部分只取消标点符号。导致类似:
“简体中文 (%u7B80%u4F53%u4E2D%u6587)”
留给我未转义(抱歉)的汉字。
我想要实现的是将一组完全未转义的字符串传递langs
到此查询中:
cards = cards.where(:language => langs)
因为它们被记录在数据库中,以获取所有选定语言的项目。
我找不到可能会这样做的 ruby/rails 方法。而且我不知道在不逃避后者的情况下替换前面的正确方法%
(\
以便得到类似的东西"\u7B80"
无缝地变成"简"
.
有任何想法吗?