hello,
I am playing around with squeak to connect to webservices and I run into issues very early in the process. Something to do with url encoding. Is there any reason the following code:
'aa aa éé aa aa' encodeForHTTP
would generate this:
'aa%20aa%20%C3%A9%C3%A9%20%A9aa%20%A9aa'
where "space" is correctly set to %20 before the 'é' gets converted, but then becomes %20%A9 afterwards. As if the %A9 of my 'é' stays in the buffer and breaks my encoding of space character.
Any help would be appreciated I am not even dealing with XML processing of the reply for webservice as I cannot get the query going :)
Thanks, Stephane
On 16.11.2009, at 23:04, Stephane Schitter wrote:
hello,
I am playing around with squeak to connect to webservices and I run into issues very early in the process. Something to do with url encoding. Is there any reason the following code:
'aa aa éé aa aa' encodeForHTTP
would generate this:
'aa%20aa%20%C3%A9%C3%A9%20%A9aa%20%A9aa'
where "space" is correctly set to %20 before the 'é' gets converted, but then becomes %20%A9 afterwards. As if the %A9 of my 'é' stays in the buffer and breaks my encoding of space character.
Seems you have uncovered a bug. Would be great if you could report it at
Here is a workaround:
'aa aa éé aa aa' squeakToUtf8 encodeForHTTPWithTextEncoding: 'latin1'
- Bert -
On 16.11.2009, at 23:17, Bert Freudenberg wrote:
On 16.11.2009, at 23:04, Stephane Schitter wrote:
hello,
I am playing around with squeak to connect to webservices and I run into issues very early in the process. Something to do with url encoding. Is there any reason the following code:
'aa aa éé aa aa' encodeForHTTP
would generate this:
'aa%20aa%20%C3%A9%C3%A9%20%A9aa%20%A9aa'
where "space" is correctly set to %20 before the 'é' gets converted, but then becomes %20%A9 afterwards. As if the %A9 of my 'é' stays in the buffer and breaks my encoding of space character.
Seems you have uncovered a bug. Would be great if you could report it at
Here is a workaround:
'aa aa éé aa aa' squeakToUtf8 encodeForHTTPWithTextEncoding: 'latin1'
- Bert -
And in the meantime, the bug has been fixed. See below.
- Bert -
Begin forwarded message:
From: commits@source.squeak.org Date: 17. November 2009 11:15:06 MEZ To: squeak-dev@lists.squeakfoundation.org, packages@lists.squeakfoundation.org Subject: [squeak-dev] The Trunk: Collections-nice.196.mcz Reply-To: squeak-dev@lists.squeakfoundation.org
Nicolas Cellier uploaded a new version of Collections to project The Trunk: http://source.squeak.org/trunk/Collections-nice.196.mcz
==================== Summary ====================
Name: Collections-nice.196 Author: nice Time: 17 November 2009, 11:14:59 am UUID: 24d4a90b-3d42-0945-8f92-b25c7b464ff8 Ancestors: Collections-nice.195
Correct bug reported on beginners list 'aa aa éé aa aa' encodeForHTTP
=============== Diff against Collections-nice.195 ===============
Item was changed: ----- Method: String>>encodeForHTTPWithTextEncoding:conditionBlock: (in category 'converting') ----- encodeForHTTPWithTextEncoding: encodingName conditionBlock: conditionBlock "change dangerous characters to their %XX form, for use in HTTP transactions"
| httpSafeStream encodedStream cont | httpSafeStream := WriteStream on: (String new). encodedStream := MultiByteBinaryOrTextStream on: (String new: 6). encodedStream converter: (TextConverter newForEncoding: encodingName). self do: [:c | (conditionBlock value: c) ifTrue: [httpSafeStream nextPut: (Character value: c charCode)] ifFalse: [
encodedStream text; resetToStart.
]. ^ httpSafeStream contents.encodedStream text; reset. encodedStream nextPut: c. encodedStream position: 0. encodedStream binary. cont := encodedStream contents. cont do: [:byte | httpSafeStream nextPut: $%. httpSafeStream nextPut: (byte // 16) asHexDigit. httpSafeStream nextPut: (byte \\ 16) asHexDigit. ]. ].
!
beginners@lists.squeakfoundation.org