Keep your eye on the code page, practical exam

Raymond Chen


The instructions that came with my new monitor are printed
in several languages.
One of those languages is Polish, or at least it would be Polish if…
well, you’ll see.

UWAGA: Szczegó³owe informacje dla u¿ytkownika
znajduj¹ siê na do³¹czonej p³ycie CD.

This is garbage. What they meant to write was

UWAGA: Szczegółowe informacje dla użytkownika
znajdują się na dołączonej
płycie CD.

(It means, “Note: Detailed user information is included on the CD.”)

What went wrong?
Why did all but one of the accented characters come out corrupted?

The company responsible for the instructions failed to

keep their eye on the code page
The text provided to them by their Polish translator
was in

code page 1250 (Central Europe)
If you hold up that code page diagram next to

code page 1252 (Latin I)
you can see where the problem is.
The company took that string in code page 1250
and printed it in code page 1252.
For example, the “ł” character is at position B3 in code page 1252;
the character at that position in code page 1250 is “³”.

I just hope their Polish customers can figure out what the text is
supposed to say.

Okay, that was their practical exam.
Here’s yours:

I am running on a Spanish install of Windows 2003 and calling

                    pwzStr, -1, pszStr, nRet, NULL, pbUsedDefault);

When I pass this Unicode string

D:\Documents and Settings\ABC\Configuración local\

it returns the multibyte string below and doesn’t set

D:\Documents and Settings\ABC\Configuraci¢n local\

Why isn’t pbUsedDefault set?

In fact, I’m going to add two bonus questions:
(1) How should this customer change their code to get
the path name converted correctly?
(2) Why?
The answer to the second question is the important one.

Raymond Chen
Raymond Chen

Follow Raymond