簡體   English   中英

使用jquery自動完成標記的utf-8問題

[英]utf-8 problem in using jquery autocomplete tags

嘿伙伴。 最近我使用了jquery自動完成標簽

http://devthought.com/projects/jquery/textboxlist/

除了utf-8標簽建議外,一切都很順利,建議只提供英文標簽

我猜測腳本行出了問題,它可以正常使用英文標簽,但不能使用像波斯語這樣的多字節語言

TextboxList.Autocomplete.js中的第212行可能是罪魁禍首:

regexp = new RegExp('\\b' + escapeRegExp(search), insensitive ? 'i' : '');

那是在單詞邊界之后尋找給定的字符。 但是單詞邊界依賴於對單詞字符的識別,而JavaScript RegExp的單詞字符列表只是ASCII字母數字加_ 因為RegExp對Unicode一無所知,所以在單詞以非ASCII字符開頭的地方不起作用。

您可以嘗試刪除\\\\b在這種情況下,它將匹配任何位於其中任何位置的給定字符串的建議,而不僅僅是在單詞的開頭。

您的HTTP標頭錯誤。 它應該是:

header('Content-Type: application/json; charset=UTF-8');

您還可以縮短代碼並使用MySQL進行排序:

$sql = 'SELECT `tag` FROM `'.$prefix.'_tags` ORDER BY `tag`';
$result = $db->sql_query($sql);
if (!$result) {
    header($_SERVER['SERVER_PROTOCOL'].' 500 Internal Server Error');
    echo mysql_error();
    exit;
}

$response = array();
$i = 0;
while ($row = $db->sql_fetchrow($result)) {
    $response[] = array($i++, $row);
}
header('Content-Type: application/json; charset=UTF-8');
echo json_encode($response);

你的內容類型標題有點錯誤。 首先,它應該是content-type:something; charset=something content-type:something; charset=something ,即content-type:text/html; charset=utf-8 content-type:text/html; charset=utf-8

但實際上建議使用內容類型的application/json ,請參閱此處什么是正確的JSON內容類型?

所以,你可以這樣做

header("Content-Type:application/json; charset=UTF-8");

TextboxList.Autocomplete.js中的第215行可能是罪魁禍首:

if (regexp.test(values[i][1])) newvals.push(values[i]);

把它轉交給

if (values[i][1].indexOf(escapeRegExp(search)) != -1) newvals.push(values[i]);

Bobince(第一個答案)對,問題在第212行,但解決了它可以在第215行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM