Thanks Jan, your recent tip on converting Win32::OLE-passed strings as 
UTF8 saved me hours of blank looks. Specifically:

Win32::OLE->Option(CP => Win32::OLE::CP_UTF8());

Have a great Labour Day!

Mike Trotman wrote:
> Thanks - that's very useful.
>
> And I had missed the Unicode mode in the Win32::OLE documentation.
>
> To clarify:
>
> Part of my problem is that the MSXML XSLT transformations do NOT 
> output the character encoding in the XML declaration.
> So - $xmldoc->transformNode($xsltsheet) may output Windows-1252 
> encoded data - but does not contain encoding='Windows-1252' in the <!? 
> xml version='1.0'?>
> and so other parts of the process expect it to contain UTF-8.
>
> If I turn on the Win32::OLE UTF8 code page for a Win32::OLE call to 
> MSXML that returns a UTF-16 string (or Windows-1252)
> - is the automatic conversion to UTF8 likely to be correct - or incorrect?
> IE - does the automatic conversion correctly detect the CP of the OLE 
> output?
>
> Thanks
>
> Jan Dubois wrote:
>> On Fri, 27 Apr 2007, Mike Trotman wrote:
>>   
>>> I am writing a CGI application that uses WIN32::OLE to interface to
>>> Microsoft ADO, MS Access, SQL Server and MSXML for XML documents and
>>> XSLT transformations.
>>>
>>> I suspect that something in the way I am passing data around (or in
>>> the ADO implementation of 'savetoxml') is not dealing correctly with
>>> XML document encoding declarations. The data is originally in an MS
>>> Access database - but has been entered using copy and paste from MS
>>> Word documents from around the world - so contains many weird and
>>> wonderful bytes.
>>>
>>> To help in my debugging process can anyone tell me how WIN32::OLE
>>> deals with 'strings' returned from method calls? i.e.
>>> - are they pure byte data as output by the method (and maybe in UTF-16)?
>>> - or are they converted to Perl's internal format (using any current
>>>   Perl encoding settings)?
>>> - or does something else happen?
>>>
>>> The problems I am having are primarily when outputting XML documents
>>> (or HTML) to send to the browser.
>>> e.g.my $OUTPUT=""; $OUTPUT=$xmldoc->transformNode($xsltsheet);
>>>
>>> print $OUTPUT;
>>>     
>>
>> All string data is converted to the current system codepage by
>> Win32::OLE before being passed back to Perl _unless_ you switch
>> Win32::OLE to Unicode mode first:
>>
>>     Win32::OLE->Option(CP => Win32::OLE::CP_UTF8());
>>
>> After this call all strings are converted to UTF8 and marked as
>> such in the Perl internal flags.
>>
>> Cheers,
>> -Jan
>>
>>
>> Message Scanned by ClamAV on datalucid.com
>>
>>   
>
> -- 
> Datalucid Limited
> 8 Eileen Road
> South Norwood
> London SE25 5EJ
>
> tel :+44-0208-239-6810
>
> email: [EMAIL PROTECTED]
> web: http://www.datalucid.com
> Message Scanned by ClamAV on datalucid.com
> ------------------------------------------------------------------------
>
> _______________________________________________
> Perl-Win32-Users mailing list
> [email protected]
> To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs
>   

_______________________________________________
Perl-Win32-Users mailing list
[email protected]
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to