[Cheyenne]   dans requête avec do-sql
trigram7-Jun-2011/18:45:09+2:00
Bonjour,

J'essaie de faire une page très simple sous Cheyenne pour exécuter le résultat d'une requête SQL que l'on peut saisir dans un TEXTAREA.

Tout marche bien, sauf que j'ai eu pas mal de soucis avec un   positionné dans le TEXTAREA.

Et voici l'erreur que l'on obtient :

RSP Runtime Error

Script	%www/execute-postgresql.rsp
Error Code	800
Description	User Error : ERREUR: séquence d'octets invalide pour l'encodage « UTF8 » : 0xa0
Near	[do-sql 'clients sqlquery foreach client ]
Where	none


Voici le code source de ma page %execute-postgresql.rsp :

<% debug/on %>
<html>
<head><title>Execute PostgreSQL Query</title></head>
<body>
<form method="POST" action="execute-postgresql.rsp">
Please enter query :<br>
<textarea name="sqltext" cols="80" rows="10"></textarea>
<br>
<input type="submit" value="Execute">
</form>
<br>
<% 
	if not none? sqlquery: select request/content 'sqltext [ 
%>
Results:
<br>
<table border="1">
<%
	sqlresult: do-sql 'clients sqlquery
	foreach line sqlresult [ 
		emit <tr>
		for i 1 (length? line) 1 [
    		emit reduce [<td> pick line i </td>]
    	]
    	emit </tr> 
	] 
%>
</table>
<% ] %>
</body>
</html>


Nicolas
trigram7-Jun-2011/18:46:05+2:00
C'est la ligne de code suivante qui provoque l'erreur :

<textarea name="sqltext" cols="80" rows="10"></textarea>
trigram7-Jun-2011/18:46:47+2:00
Correction :

<textarea name="sqltext" cols="80" rows="10"> </textarea>
trigram8-Jun-2011/0:33:46+2:00
En fait, il s'agit de l'espace en HTML & n b s p ;
Evidemment, il est interpréter, donc il n'apparaît pas dans le thread...
trigram8-Jun-2011/0:49:10+2:00
Réponse de DocKimbel :

le & n b s p ; est encodé par le navigateur en 0xA0 avant l'envoi par POST, donc html-decode ne peut rien faire dans ce cas.
Tu devrais utiliser cette fonction pour encoder en UTF-8 les requêtes avant envoi: http://www.rebol.org/view-script.r?script=utf8-encode.r
Une autre solution pour régler le problème est un TRIM sur la requête avant envoi (pour nettoyer les blancs avant et après la requête).
Pour cibler ce caractère spécial: trim/with sqlquery "^(a0)"

Login required to Post.


Powered by RebelBB and REBOL 2.7.8.4.2