That is correct, sk.

#writeStreamDo: is enough though, #utf8 is the default encoding

> On 24 Jul 2019, at 22:16, sk via Pharo-users <pharo-users@lists.pharo.org> 
> wrote:
> 
> 
> From: sk <snoob...@yahoo.ie>
> Subject: Re: [Pharo-users] P7 regression
> Date: 24 July 2019 at 22:16:50 GMT+2
> To: Any question about pharo is welcome <pharo-users@lists.pharo.org>
> 
> 
> Hi Hilaire
> 
> I downloaded latest Dr Geo and took a quick look at how the files are saved. 
> It looks like the xml contents are not encoded (in UTF-8) but simply written 
> to a binary write stream, which means that when a WideString is written you 
> should consistently get a badly encoded file.
> 
> You could test this out by changing this code
> DrGDirectoryLocal>>put: stream into: filename
>       (location  asFileReference / filename) ensureDelete 
> binaryWriteStreamDo: [ :fileStream | 
>               fileStream nextPutAll: stream contents]
> 
> 
> to rather be:
> DrGDirectoryLocal>>put: stream into: filename
>       (location asFileReference / filename) ensureDelete
>               writeStreamEncoded: 'utf-8'
>               do: [ :fileStream | fileStream nextPutAll: stream contents ]
> 
> When I made this modification it worked for me i.e. the file was readable and 
> correctly encoded.
> 
> Regards
> Carlo
> 
> On 24 Jul 2019, at 21:07, Hilaire <hila...@drgeo.eu> wrote:
> 
> [...]
> stream := WriteStream on: (String new: 4000).
> DrGeoXml new
>   app: self app;
>   saveOn: stream.
> [...]
> 
> DrGeoXml>>saveOn: stream
>    | doc writer root |
>    doc := XMLDocument new version: '1.0'.
>    writer := XMLWriter on: stream.
>    root := XMLElement named: #drgenius.
>    self writeFigureAsXmlTo: root.
>    doc addElement: root.
>    doc printXMLOn: writer.
> 
> The stream is passed to the XMLWriter, then it goes down to each items
> of the sketch to write its own XML node.
> 
> For example, to write its basic information as its name, where I have issue:
> 
> writeAsXmlTo: aNode
>    "return the newly created element"
>    | node |
>    self rehash.
>    node :=  XMLElement named: self basicType attributes: Dictionary new.
>    node attributeAt: #type put: self nodeType;
>        attributeAt: #name put: (name ifNil: ['']);
>        attributeAt: #id put: self hash asString.
>    self writeParentsAsXmlTo: node.
>    aNode addElement: node.
>    ^node
> 
> This code is as is since about 2005-2007
> 
> I will dig in it but it is strange.
> 
> 
> Le 24/07/2019 à 18:45, Sven Van Caekenberghe a écrit :
>> But how do you write it to a file then ?
>> 
>> FileLocator desktop / 'hilaire.xml' writeStreamDo: [ :out | out << 'Les 
>> élèves Françaises ont 10 €' ].
>> 
>> (FileLocator desktop / 'hilaire.xml') contents.
>> 
>> ">> 'Les élèves Françaises ont 10 €'"
> 
> -- 
> Dr. Geo
> http://drgeo.eu
> 
> 
> 
> 
> 
> 
> 


Reply via email to