[Cheyenne] dans requête avec do-sql | |
trigram | 7-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 | |
trigram | 7-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> | |
trigram | 7-Jun-2011/18:46:47+2:00 |
Correction :<textarea name="sqltext" cols="80" rows="10"> </textarea> | |
trigram | 8-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... | |
trigram | 8-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. |