gpt4 book ai didi

javascript - ruby 和 javascript 之间的字符串编码长度不匹配

转载 作者:行者123 更新时间:2023-12-02 17:51:21 25 4
gpt4 key购买 nike

我使用的是 Ruby on Rails,但这并不那么重要(除了 Rails 如何编码请求参数之外)。

我有一个文本框,用户可以在其中输入文本。我使用 XHR 将此文本发送回我的 ruby​​ 后端,该后端执行一系列字符串处理。它查找某些关键字,然后将找到的关键字列表及其在字符串中的起始索引返回给客户端。

然后,我在 JavaScript 中处理关键字和索引来执行更多操作。

问题在于,如果文本包含非 ASCII 字符,Ruby 的索引与 javascript 的索引不匹配。 JavaScript 处理不兼容的 unicode 字符就像处理任何其他字符一样,而 Ruby 将其转换为各种代码序列,这些代码序列会改变字符串的长度,并使索引变得无用。

对于如何处理这种情况有什么建议吗?简单的转义/取消转义编码/解码将不起作用。

这是一个例子玛丽有一只小羊

我的数据库中有一个与小羊羔匹配的关键字。

Ruby(Rails 参数化后)返回该字符串的长度为 23,littlelamm 的起始索引为 12。

Javascript 返回长度为 22 的字符串,起始索引为 11。

最佳答案

我没有尝试过这个,因为我从来没有使用过 Ruby 1.8.7,但也许 mb_chars 可以帮助你。

http://api.rubyonrails.org/classes/ActiveSupport/Multibyte/Chars.html

尝试运行“Mary had ä Little Lamb”.mb_chars.size

无论哪种方式,您都应该升级到 Ruby 2.1,因为不再支持 Ruby 1.8.7。

关于javascript - ruby 和 javascript 之间的字符串编码长度不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21337451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com