[Seaside-dev] Encoding issues? Entering 'euro sign' into a text input breaks render

John Thornborrow john at pinesoft.co.uk
Wed Oct 17 15:54:21 UTC 2007


Right.. I've found the issue and resolved it.

The BMP Table on WAHtmlEncoder does not contain an element at value
8364, or 8365 (Euro's value is 8364) but it is less than the size of the
table (65536) so it sends nil to RWBinaryOrTextStream>>nextPut:; which has:

RWBinaryOrTextStream>>nextPut: charOrByte

	super nextPut: charOrByte asCharacter

This is where it fails - nil does not understand asCharacter.

I have inspected the table, and noted that it was a majority of nil's -
so I inspected it, and ran: "self at: 8365" but did not receive a
notification..

So then I ran WAHtmlEncoder class>>initializeBMP and checked the table
again..

Now when I run the tests - it works. I run my example, it works. I run
my clients application, it works :)

I'm not entirely sure what cause the table to have so many nil values,
but it has now been repopulated correctly.. so the moral of the story:
next time I'll blame monticello (and/or SqueakMap/Package Universe) for
not calling class #initliaze when installing :)

Sorry for wasting your time.

Regards,
John.


John Thornborrow wrote:
> P.S. those are the characters being received by WAKom>>handleRequest: in
> the post fields.
> 
> John Thornborrow wrote:
>> No, I meant #processHttpRequest: on HttpService class. Though I did also
>> walkthrough WAKom handleRequest:
>>
>> Regards,
>> John.
>>
>> Philippe Marschall wrote:
>>> 2007/10/17, John Thornborrow <john at pinesoft.co.uk>:
>>>> I've been walking-through the kom request process after halting in
>>>> HttpService>>#handleRequest: and can see that the field finalises as
>>>> unencoded string of three characters (which cannot be copy/pasted due to
>>>> obvious encoding issues)
>>> Do you mean WAKom>>#handleRequest:? If then what you observe is the
>>> correct behaviour. The normal WAKom should represent the euro sign as
>>> a ByteString with the three Characters (actually only bytes) 16rE2
>>> 16r82 16rAC. Only the WAKomEncoded should represent it as a WideString
>>> with one Character with value 16r20AC.
>>>
>>> Cheers
>>> Philippe
>>>
>>>> However, it is just odd that I can challenge this with what I mentioned
>>>> before and it will convert easily. I shall discuss with my colleague
>>>> when he returns from sick leave, as this is edging me on to believe it
>>>> is a squeak encoding issue - and he has a far superiour understanding of
>>>> squeak's encoding than I. I will let you know the outcome; but in the
>>>> meantime I shall continue to look/walk through Kom.
>>>>
>>>> Regards,
>>>> John.
>>>>
>>>> Philippe Marschall wrote:
>>>>> 2007/10/17, John Thornborrow <john at pinesoft.co.uk>:
>>>>>> I have 3.10.2 vm, Windows XP (32Bit)
>>>>>>
>>>>>> Seaside 2.8beta from SqueakMap, with "Yes" to all options (Kom,
>>>>>> Scriptaculous, RSS) Just reinstalled to confirm.
>>>>>>
>>>>>> KomHttpServer-pmm.2 - yes.
>>>>>> Seaside2.8a1-pmm.476 - yes
>>>>>>
>>>>>> /seaside/tests/alltests (encoding) multipart fails for Euro symbol, and
>>>>>> other unicode chars. (prime, left side quote, etc) Same error(s) as before.
>>>>>>
>>>>>> The sample code I provided in my first mail also breaks with the same
>>>>>> result.
>>>>> Wow, this is getting really strange, I just did the same and still can
>>>>> not reproduce:
>>>>> http://img502.imageshack.us/img502/3742/shotih6.png
>>>>>
>>>>> You did not change something in the session or browser properties? Is
>>>>> there some way how you could build a clean image that exposes the bug
>>>>> and give it to me?
>>>>>
>>>>> Cheers
>>>>> Philippe
>>>>>
>>>>>> Thanks and regards,
>>>>>> John.
>>>>>>
>>>>>> Philippe Marschall wrote:
>>>>>>> 2007/10/16, John Thornborrow <john at pinesoft.co.uk>:
>>>>>>>> So what am I to use instead? I've not seen anything about an alternative.
>>>>>>>>
>>>>>>>> I used SeasideInstaller - I always did, yet it left me with what I have
>>>>>>>> been having trouble with today - the encoding test failing, and Seaside
>>>>>>>> rendering breaking on any "special" character. I only installed other
>>>>>>>> versions of KomHttpServer in a bid to try and fix this problem.
>>>>>>> Ok, this is different then, you have my full attention. So lets recap:
>>>>>>> - you use Squeak 3.9, correct?
>>>>>>> - you use SeasideInstaller from SqueakMap, which version, 2.8beta?
>>>>>>> - you use WAKom
>>>>>>> - /seaside/tests/alltests the "Encoding" tests fails?
>>>>>>> Anything else? I just did all this for Windows XP and a 3.10.6 VM and
>>>>>>> the tests work. Can you confirm that you have KomHttpSever-pmm.2 and
>>>>>>> Seaside2.8a1-pmm.476? This is configuration that is really supposed to
>>>>>>> work. If this really doesn't work for you then I need your image
>>>>>>> because otherwise I'm not able to reproduce this bug.
>>>>>>>
>>>>>>> Cheers
>>>>>>> Philippe
>>>>>>>
>>>>>>>> Regards,
>>>>>>>> John
>>>>>>>>
>>>>>>>> Philippe Marschall wrote:
>>>>>>>>> 2007/10/16, John Thornborrow <john at pinesoft.co.uk>:
>>>>>>>>>> I orignally had the Package Universe version of KomHttpServer (6.2) and
>>>>>>>>>> received the same results - the test does not pass.
>>>>>>>>> Then you did use WAKom in a Squeak 3.9 image. As noted several times
>>>>>>>>> this is not supported. This is a bug in KomHttpServer. We contacted
>>>>>>>>> the maintainer and sent him patches (2 methods). He's too busy.
>>>>>>>>>
>>>>>>>>>> The same is also true for many other characters, unicode 2000+ also
>>>>>>>>>> cause the test and Seaside to fail rendering.
>>>>>>>>>>
>>>>>>>>>> This is proving to be havoc for my clients who are copying from Word
>>>>>>>>>> documents made by publishers who make use of left/right-side quotes,
>>>>>>>>>> primes etc. in their documents and wish to publish them on the web in
>>>>>>>>>> HTML form. I agree, this is not your problem, it is mine, but surely you
>>>>>>>>>> must be able to see that it is something to consider, rather than just
>>>>>>>>>> sticking to the still-not-yet-fully-supported-by-browsers (X)HTML standards?
>>>>>>>>> XHTML has _nothing_ at all to do with it. Just that the specified and
>>>>>>>>> actual encoding don't match. You want options? I'll give you options.
>>>>>>>>> They all work with all the languages you get on
>>>>>>>>> http://www.columbia.edu/kermit/utf8.html, not only the euro symbol.
>>>>>>>>>
>>>>>>>>> - use the attached KomHttpServer version. This is the one from the
>>>>>>>>> SeasideInstaller. This makes WAKom and WAKomEncoded work on Squeak 3.9
>>>>>>>>> - use http://squeak.krampe.se/KomHttpServer-gk.14.mcz this makes
>>>>>>>>> WAKomEncoded39 work on Squeak 3.9
>>>>>>>>>
>>>>>>>>> Anything beyond that I don't care.
>>>>>>>>>
>>>>>>>>> Cheers
>>>>>>>>> Philippe
>>>>>>>>>
>>>>>>>>>> Regards,
>>>>>>>>>> John
>>>>>>>>>>
>>>>>>>>>> Philippe Marschall wrote:
>>>>>>>>>>> 2007/10/16, John Thornborrow <john at pinesoft.co.uk>:
>>>>>>>>>>>> The /seaside/tests/alltests for encoding doesn't pass - it fails with:
>>>>>>>>>>>>
>>>>>>>>>>>> "Internal Error
>>>>>>>>>>>>
>>>>>>>>>>>> MessageNotUnderstood: UndefinedObject>>asCharacter
>>>>>>>>>>>>
>>>>>>>>>>>> RWBinaryOrTextStream>>nextPut:
>>>>>>>>>>>> WAHtmlEncoder(WAEncoder)>>nextPutAll:
>>>>>>>>>>>> ByteString(String)>>encodeOn:
>>>>>>>>>>>> WAHtmlStreamDocument>>print:
>>>>>>>>>>>> WARenderCanvas(WAHtmlCanvas)>>text:
>>>>>>>>>>>> ByteString(String)>>renderOn:
>>>>>>>>>>>> [] in WAGenericTag(WATagBrush)>>with: {[self before. anObject renderOn:
>>>>>>>>>>>> canvas. self after]}
>>>>>>>>>>>>
>>>>>>>>>>>> etc.."
>>>>>>>>>>>>
>>>>>>>>>>>> I've got the lastest KomHttpServer from squeaksource.com and I'm not
>>>>>>>>>>>> sure what version WAKom* is - I thought this was part of the seaside
>>>>>>>>>>>> package?
>>>>>>>>>>> No, we only support the official one on SqueakMap and the one from
>>>>>>>>>>> netstyle.ch which comes with the SeasideInstaller.
>>>>>>>>>>>
>>>>>>>>>>>> I've made a work around, and that is to include:
>>>>>>>>>>> Use one of the supported KomHttpServers. They should pass the
>>>>>>>>>>> /seaside/tests/alltests at least in ecoding mode.
>>>>>>>>>>>
>>>>>>>>>>> If you use an other version of Kom we don't care. We're sorry but
>>>>>>>>>>> already supporting these is enough of a mess.
>>>>>>>>>>>
>>>>>>>>>>> Cheers
>>>>>>>>>>> Philippe
>>>>>>>>>>>
>>>>>>>>>>>> aCharacter = (Character value: 1069555884) ifTrue: [^ aStream
>>>>>>>>>>>> nextPutAll: '&euro;' ] .
>>>>>>>>>>>>
>>>>>>>>>>>> to the list of characters in WAHtmlEncoder class>>encode:on: but given
>>>>>>>>>>>> the ourcome of the last time I made changes to this method, it is not
>>>>>>>>>>>> the preferred/accepted solution.
>>>>>>>>>>>>
>>>>>>>>>>>> Regards,
>>>>>>>>>>>> John
>>>>>>>>>>>>
>>>>>>>>>>>> Philippe Marschall wrote:
>>>>>>>>>>>>> 2007/10/16, John Thornborrow <john at pinesoft.co.uk>:
>>>>>>>>>>>>>> Hello all,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I've discussed this briefly before on the list, following my
>>>>>>>>>>>>>> contribution regarding encoding more characters than what the (X)HTML
>>>>>>>>>>>>>> spec defines - but did not have an example at the time.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> However, I have just stumbled upon a significant problem which I wanted
>>>>>>>>>>>>>> to raise as an issue to the dev-list; that is that Seasides rendering
>>>>>>>>>>>>>> does not like the Euro-symbol.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> The simplest example:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> renderContentOn: html
>>>>>>>>>>>>>>   html form with: [
>>>>>>>>>>>>>>     html textInput callback: [ :x | text := x ].
>>>>>>>>>>>>>>     html paragraph with: text.
>>>>>>>>>>>>>>     html submitButton
>>>>>>>>>>>>>>   ]
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On the form, enter a Euro symbol (ALT+0128 on Windows) in the text box
>>>>>>>>>>>>>> and submit.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> After submitting, it is very obvious that there is a problem (the screen
>>>>>>>>>>>>>> will be filled with characters that cannot be rendered.)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Just incase it is something I am doing wrong, I have attached a file-out
>>>>>>>>>>>>>> of the example component. If anyone could confirm this is a problem/bug
>>>>>>>>>>>>>> then I shall submit a bug-report, providing it is not already reported :).
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> However, I've also noticed that the WAEncoder>>initializeBMP does not
>>>>>>>>>>>>>> reach the range necessary to encode the euro (Character value: 1069555884)
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> P.S. Tested with the latest version available in Monticello as of today,
>>>>>>>>>>>>>> and this is on Squeak 32bit 3.10 vm on Windows platform.
>>>>>>>>>>>>> What combination of WAKom* and KomHttpServer do you run?
>>>>>>>>>>>>> WAEncodingTest under /seaside/test/alltests should test this exact
>>>>>>>>>>>>> scenario and run.
>>>>>>>>>>>>>
>>>>>>>>>>>>> Cheers
>>>>>>>>>>>>> Philippe
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>> John
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Pinesoft Computers are registered in England, Registered number: 2914825. Registered office: 266-268 High Street, Waltham Cross, Herts, EN8 7EA
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> This message has been scanned for viruses by BlackSpider MailControl - www.blackspider.com
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> 'From Squeak3.9 of 7 November 2006 [latest update: #7067] on 16 October 2007 at 11:50:34 am'!
>>>>>>>>>>>>>> WAComponent subclass: #BrokenEuro
>>>>>>>>>>>>>>         instanceVariableNames: 'text'
>>>>>>>>>>>>>>         classVariableNames: ''
>>>>>>>>>>>>>>         poolDictionaries: ''
>>>>>>>>>>>>>>         category: 'MyStuff'!
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> !BrokenEuro methodsFor: 'rendering' stamp: 'jmt 10/16/2007 10:58'!
>>>>>>>>>>>>>> renderContentOn: html
>>>>>>>>>>>>>>         html form with: [
>>>>>>>>>>>>>>                 html textInput callback: [ :x | text := x ].
>>>>>>>>>>>>>>                 html paragraph with: text.
>>>>>>>>>>>>>>                 html submitButton
>>>>>>>>>>>>>>         ]! !
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> "-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- "!
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> BrokenEuro class
>>>>>>>>>>>>>>         instanceVariableNames: ''!
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> !BrokenEuro class methodsFor: 'as yet unclassified' stamp: 'jmt 10/16/2007 11:49'!
>>>>>>>>>>>>>> canBeRoot
>>>>>>>>>>>>>>         ^true! !
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>> seaside-dev mailing list
>>>>>>>>>>>>>> seaside-dev at lists.squeakfoundation.org
>>>>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> seaside-dev mailing list
>>>>>>>>>>>>> seaside-dev at lists.squeakfoundation.org
>>>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> seaside-dev mailing list
>>>>>>>>>>>> seaside-dev at lists.squeakfoundation.org
>>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>>>>>>>>>>>
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> seaside-dev mailing list
>>>>>>>>>>> seaside-dev at lists.squeakfoundation.org
>>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>> _______________________________________________
>>>>>>>>>> seaside-dev mailing list
>>>>>>>>>> seaside-dev at lists.squeakfoundation.org
>>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>>>>>>>>>
>>>>>>>>> ------------------------------------------------------------------------
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> seaside-dev mailing list
>>>>>>>>> seaside-dev at lists.squeakfoundation.org
>>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>>>>>>> _______________________________________________
>>>>>>>> seaside-dev mailing list
>>>>>>>> seaside-dev at lists.squeakfoundation.org
>>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> seaside-dev mailing list
>>>>>>> seaside-dev at lists.squeakfoundation.org
>>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> _______________________________________________
>>>>>> seaside-dev mailing list
>>>>>> seaside-dev at lists.squeakfoundation.org
>>>>>> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>>>>>
>>>>> _______________________________________________
>>>>> seaside-dev mailing list
>>>>> seaside-dev at lists.squeakfoundation.org
>>>>> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>>>>
>>>>>
>>>>>
>>>>>
>>>> _______________________________________________
>>>> seaside-dev mailing list
>>>> seaside-dev at lists.squeakfoundation.org
>>>> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>>>
>>> _______________________________________________
>>> seaside-dev mailing list
>>> seaside-dev at lists.squeakfoundation.org
>>> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>>
>>>
>>>  
>>>
>> _______________________________________________
>> seaside-dev mailing list
>> seaside-dev at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
>>
>>
>>  
>>
> _______________________________________________
> seaside-dev mailing list
> seaside-dev at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/seaside-dev
> 
> 
>  
> 


More information about the seaside-dev mailing list