Erland Sommarskog <[EMAIL PROTECTED]> writes:
>I have to admit that I have not completely researched what the documentation
>has to say, but this is not only a question on how, but also on which way
>to take.
>
>I'm working on an XS module that will interact with the SQL Server OLE DB
>Provider, thus it will run on Windows only. The intention is that the 
>XS will be wrapped in a Perl module, and the data will end up in Perl
>variables. Also for error messages from SQL Server, the intention is that
>normally there will be a callback to a Perl routine that will print the 
>messages. But there are situations that I plan to print messages directly
>from the XS module, and these message can include data that comes from 
>SQLOLEDB, and thus be Unicode.

>
>The problem I see is that I don't know in which output mode Perl_IO_stderr()
>has been opened in. Should I query PeriIO about the mode and then convert
>the data to the proper encoding, or is possible to pass some PerlIO print
>function an SV, and then let PerlIO do the job? 

As far as you are concerned PerlIO_stderr() is either ready to accept UTF-8 
when you don't have a problem, (other than UTF-8 encoding chars)
or it is "still" in native mode - presumably some code page or other. 
Even perl can't guess what that is reliably, it just assumes it is 
iso-8859-1 and "downgrades" to that.

>Surely it is not a good
>thing to bypass PerlIO completely, and use wprintf or somesuch?

That should not be too bad on stderr (as it is unbuffered) but it isn't
a good thing...

Reply via email to