Неверный синтаксис запроса при запросе couchdb lucene из php (с curl) нелатинскими символами

0

Я создал общую форму поиска с php для запроса полного текста текста couchdb-lucene. образец кода:

<?php
if($_POST['formSubmit'] == "Submit") {
  
$varKeyword = $_POST['formKeyword'];
 
  
$ch = curl_init();
			
curl_setopt($ch, CURLOPT_URL, "http://00.000.00.158:5984/_fti/local/elod_empty/_design/sellerAll/In_All_Json?q=".$varKeyword);
echo($varKeyword);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);   
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
	       'Content-type: application/json; charset=utf-8',
		   'Accept: */*'
            ));
$response = curl_exec($ch); 
curl_close($ch);
echo($response);
}
?>
<html>
<head>
	<title>search Form</title>
</head>
<body>
<form action="search2.php" method="post">
		<p>
			enter search keyword<br>
			<input type="text" name="formKeyword" maxlength="50" value="<?=$varKeyword;?>" />
			<input type="submit" name="formSubmit" value="Submit">
			<input type="submit" name="formClear" value="clear">
		</p>
</body>
</html>

проблема в том, что я не могу искать не латинские символы (греческий)> Результат:

{"reason":"Bad query syntax: Cannot parse '': Encountered \"\" at line 1, column 0.\nWas expecting one of:\n ...\n \"+\" ...\n \"-\" ...\n ...\n \"(\" ...\n \"*\" ...\n ...\n ...\n ...\n ...\n ...\n \"[\" ...\n \"{\" ...\n ...\n ...\n \"*\" ...\n ","code":400}

в то время как: 1) Я получаю латинские результаты, если мое ключевое слово - латинское 2) Я получаю нелатинские результаты, если я запрашиваю couchdb из командной строки (ubuntu 14.04) или любого браузера с нелатинским, например

http://00.000.00.158:5984/_fti/local/elod_sellers/_design/sellerAll/In_All_Json?q='non latin'

или

curl http://00.00.00.158:5984/_fti/local/elod_sellers/_design/sellerAll/In_All_Json?q='non latin'

версия couchdb - 1.5.0. и lucene 1.0.2 couchdb lucene log говорит: "org.eclipse.jetty.util.Utf8Appendable $ NotUtf8Exception: Недействительно UTF8"

Любое предложение было бы действительно полезно!

  • 0
    Возможно, вы сделали запрос / ответ curl с помощью utf-8, но вы также должны выдать заголовок utf-8 charset для ответа php-> client. так как вы этого не сделаете, браузер может использовать любой набор символов, который он хочет, и просто выберет его по умолчанию.
  • 0
    спасибо Марк, я обязательно попробую!
Показать ещё 3 комментария
Теги:
curl
utf-8
lucene
couchdb

1 ответ

0
Лучший ответ
<form action="search2.php" method="post">    

заменяется на:

<form action="search2.php" method="post" accept-charset="UTF-8">
  • 1
    флагманам: вот что решило проблему оп с его собственной проблемой. Для ответа на этот вопрос, пожалуйста, перестаньте отмечать его как низкое качество
  • 0
    Спасибо, Феликс, просто пытался закрыть старую проблему.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню