perl-unicode

Re: Info required - "Wide API calls" in Win32 Perl >= 5.8.2

2004-02-19 23:30:06
Jan Dubois wrote:
On Thu, 19 Feb 2004 22:03:14 +0200, Jarkko Hietaniemi <jhi(_at_)iki(_dot_)fi> 
wrote:




But even just for core Perl, things become more complicated as long as you
want to support Windows 95/98/Me.  Those platforms (I'm using the term
loosely) do not support the wide APIs.  So you can't always use the wide
APIs whenever an SV has the UTF8 bit sit; you'll actually have to try to
downgrade to Latin1 in that case.

Well, it's gotta be Windows-1252 where the system codepage is Windows-1252, which is only the case on West European versions of Windows 9x/ME. What you have to downgrade to depends on the the system codepage. For instance, on Japanese version of Windows, it's Windows-936. On Russian Win9x/ME, it's Windows-1251.

> Microsoft has a Unicode emulation layer
for Win9X, but as far as I can tell, you cannot use it transparently on
Win9x only, you'll have to create separate binaries.  Maybe that is a
reasonable price to pay though.

You don't need a separate binary for Win9x/ME as long as the MSLU (Microsoft Layer for Unicode) is guaranteed to be available on Win 9x/ME. The whole point of MSLU is that you do not have to build separate binaries for Win 9x/ME and Win 2k/XP. The question is whether MSLU dll is always available on Win 9x/ME. It comes with MS IE 5.x or later so that it's likely to be available on _most_ Win 9x/ME. An alternative to assuming that MSLU is always available is to build your own 'MSLU' that checks the OS version at run-time and calls native 'W' APIs or 'fake W APIs' depending on the OS version. That's what Mozilla does to a limited extent. Needless to say, building separate binaries for Win 9x/ME and Win 2k/XP is another option.

Jungshik