Mercurial > hg > octave-nkf > gnulib-hg
changeset 12434:80b285bbfcda
localcharset: Add comment.
author | Bruno Haible <bruno@clisp.org> |
---|---|
date | Sat, 12 Dec 2009 14:46:27 +0100 |
parents | cc761de06d4f |
children | 39d05e3c2270 |
files | ChangeLog lib/localcharset.c |
diffstat | 2 files changed, 17 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2009-12-12 Bruno Haible <bruno@clisp.org> + + * lib/localcharset.c (locale_charset): Add comment about use of GetACP. + 2009-12-11 Eric Blake <ebb9@byu.net> setenv: relax requirement in light of POSIX ruling
--- a/lib/localcharset.c +++ b/lib/localcharset.c @@ -449,7 +449,19 @@ static char buf[2 + 10 + 1]; - /* Woe32 has a function returning the locale's codepage as a number. */ + /* Woe32 has a function returning the locale's codepage as a number. + When the output goes to a console window, in Windows 95, it would have + been appropriate to use GetOEMCP() instead of GetACP(). But this has + been corrected: In Windows XP SP3, consoles accept output in the + GetACP() encoding. The GetConsoleOutputCP() function still returns + the same as GetOEMCP() (not GetACP()!), but the font handling in the + console actually uses the GetACP() encoding. If you want to "correct" + this by calling SetConsoleOutputCP(GetACP()), then for a TrueType font + it has no visible effect on the displayed glyphs, whereas when a raster + font is in use, the console performs an extra conversion from GetOEMCP() + to GetACP() encoding, thus changing the effective codepage of the + console from GetACP() to GetOEMCP()! In summary, GetConsoleOutputCP() + and SetConsoleOutputCP() are now completely broken. */ sprintf (buf, "CP%u", GetACP ()); codeset = buf;