| 
	
 | 
 Posted by Markus on 07/17/07 17:01 
Matthew White schrieb: 
> Hello, 
> I have a website that is supposed to grab a French word, and return the  
> English translation.  The front-end has an AJAX script, that dynamically  
> POST's the value to the backend: 
>  
>   function post() { 
>        var string = document.getElementById("string").value; 
>      var poststr = "string=" + encodeURI( string ); 
>      makePOSTRequest('dict.eng.php', poststr); 
>   } 
>  
> Then the backend takes the script, and queries a database for 30 words  
> most like that word: 
>  
> $query = "SELECT * FROM dictionary WHERE fr like ('" . $string . "%')  
> ORDER BY fr LIMIT 30"; 
> $query = mysql_query($query); 
>  
> If I enter in a word like "bonjour", the script returns the words that  
> are most like bonjour.  A word with a special character, like  
> "français", will return no values, even though it is in the dictionary.   
> The page is in UTF-8, and the database, tables, and fields are all  
> utf8_bin.  Can anyone please point me in the right direction? 
 
Your Ajax function does encodeURI( string ) - do you decode it somewhere  
before you do the database query? You can check this with var_dump($string). 
 
Anyway, as you do a POST request, I would actually try to go without  
urlencoding the string (this is needed with the GET method).  
Javascript's encodeURI()/decodeURI() and PHP's urlencode()/urldecode()  
may have different behaviours. I'd rather try to have your function send  
the data as UTF-8. In a normal form, this would be done with the  
accept-charset="UTF-8" attribute in the form tag; I don't know wether  
this also works when sending data with your method. 
 
HTH 
Markus
 
  
Navigation:
[Reply to this message] 
 |