Folks,
The situation with file name characters, or any other characters, in the
NT kernel is very simple. They are in Unicode. They don’t change from
one ‘localized’ version of the system to another, because the kernel
doesn’t change.
Support for the old multi-byte code pages exists only out in user32
land.
Several writers on this list have been, I’m afraid, a little confused
about this, or perhaps projecting from the behavior of 9x to NT.
Pathname separators are particularly confusing, due to a historical
artifact. In the original Microsoft Japanese code page, the Yen sign
occupied the same binary code point as the \ in ASCII. Back in
pre-directory DOS, this was deemed clever.
When pathnames came along, Microsoft simply used the Yen (and Won) as
the separator. Why? Because the official \ character in the JIS/ShiftJIS
set was double-byte, and they were, naturally, not too enthusiastic. Net
result: JP windows users learned to think of Yen and \ as sort-of the
same thing.
Later, much, much, later, Unicode came along. Uncode has separate code
points for the single-width , the double-width , the single-width Yen,
and the double-width Yen. Microsoft, at least initially, coded Windows
to treat Yen as equivalent to the Unicode , NOT to the Unicode Yen!
That made pathnames work compatibly in NT in Japanese.
Of late, more and more Microsoft bits of software have begun to
distinguish the Yen from the , but no one is going to change the
mapping in CP932.
So, for you file system developers out there, a \ is a \ is a . Accept
no substitutes, and don’t worry about Yen signs. User-mode programmers
have other headaches.