我在Ruby on Rails上,但這並不重要(除了Rails如何編碼請求參數)。字符串編碼ruby和javascript之間的長度不匹配
我有一個文本框,用戶可以輸入文本。我使用XHR將這些文本發回給我的ruby後端,它執行一系列字符串處理。它查找某些關鍵字,然後向客戶端返回它找到的關鍵字列表以及它們在字符串中的起始索引。
然後我在JavaScript中處理關鍵字和索引來做更多事情。
問題是,如果文本包含非ASCII字符,則Ruby的索引與JavaScript的索引不匹配。 Javascript像任何其他字符一樣處理不符合要求的unicode字符,而Ruby則將其轉換爲各種代碼序列,這些代碼序列會改變字符串的長度,並使索引無用。
有關如何處理這種情況的任何建議?簡單的轉義/ unescape編碼/解碼將不起作用。
下面是一個例子 Mary had ä little lamb
我有一個關鍵字匹配在我的數據庫爲little lamb
。
紅寶石(後Rails的參數化)返回的23串的長度,以及作爲little lamb
12.
的Javascript返回22的字符串長度的起始索引,和11.
mb_chars工作得很好!對於未在Rails中的未來人員,您還可以嘗試[jcode模塊](http://ruby-doc.org/stdlib-1.8.7/libdoc/jcode/rdoc/String.html) – mastaBlasta