Go Premium for a chance to win a PS4. Enter to Win

x
?
Solved

How to get current codepage?

Posted on 2004-09-07
13
Medium Priority
?
1,550 Views
Last Modified: 2013-12-03
How can I findout what codepage is currntly used by user?
0
Comment
Question by:serg111
  • 6
  • 3
  • 3
  • +1
13 Comments
 
LVL 55

Expert Comment

by:Jaime Olivares
ID: 12002310
0
 
LVL 2

Author Comment

by:serg111
ID: 12002589
The GetThreadLocale() function returns the calling thread's current locale.

In my case it always return 1033 - is it language ID?

If I change Input language of edit control - this function still return 1033
I'd like to findout codepage number that are listed under
HKEY_CLASSES_ROOT\MIME\Database\Codepage\
0
 
LVL 7

Expert Comment

by:jimwasson
ID: 12003112
Locale IDs (LCIDs) are not the same as codepages. 1033 is the decimal locale id for U.S. English.

Try _getmbcp() -- it returns an int which is the current multibyte codepage.
0
Efficient way to get backups off site to Azure

This user guide provides instructions on how to deploy and configure both a StoneFly Scale Out NAS Enterprise Cloud Drive virtual machine and Veeam Cloud Connect in the Microsoft Azure Cloud.

 
LVL 2

Author Comment

by:serg111
ID: 12003359
In which DLL is this function? I cant find it on my computer with WinXP :-(
0
 
LVL 7

Expert Comment

by:jimwasson
ID: 12005540
It's in the C runtime libraries. You might need to include the header file mbctype.h.
0
 
LVL 2

Author Comment

by:serg111
ID: 12006741
I am using borland C and it doesn't have this function in mbctype.h
Do you know what library does contain this function?
0
 
LVL 7

Expert Comment

by:jimwasson
ID: 12007098
Borland C -- which version exactly?
0
 
LVL 2

Author Comment

by:serg111
ID: 12009196
This is Version 5.02

0
 

Accepted Solution

by:
hupe earned 1000 total points
ID: 12014873
You can get codepage from LCID with this function:

UINT langCP;
GetLocaleInfo(langLCID, LOCALE_IDEFAULTANSICODEPAGE | LOCALE_RETURN_NUMBER, (LPTSTR) &langCP, sizeof(UINT));
0
 
LVL 2

Author Comment

by:serg111
ID: 12015657
I've got 2 errors with this code :-(

undefined symbol: langLCID
undefined symbol: LOCALE_RETURN_NUMBER
0
 

Expert Comment

by:hupe
ID: 12018870
The langLCID is the value get from e.g. GetUserDefaultLCID() or some other functions. The other
is define, defined somewhere is win32-includes (in my MS Visual.NET it's winnls.h, but only Win98
and later). See documentation for GetLocaleInfo().
0
 
LVL 2

Author Comment

by:serg111
ID: 12019268
OK, it works without LOCALE_RETURN_NUMBER too

but it always return langCP=1252   - English/US
even when I switch to different input language and type in characters in different languages

I think it should return different codepage number for different languages?
0
 

Expert Comment

by:hupe
ID: 12024791
The LOCALE_RETURN_NUMBER flag only force the GetLocaleInfo-function to return CP in numeric (integer) form, instead of string form (which is default behavior), Without this flag you must change typ of 'langCP' from UINT to char[].

For thread_LCID=1033 is CP=1252, so it's o.k.

For just active input language try this:

HKL input_locale_identifier = GetKeyboardLayout(0);
LANGID language_identifier = LOWORD(input_locale_identifier);
LCID locale_identifier = MAKELCID(language_identifier, SORT_DEFAULT);
GetLocaleInfo(locale_identifier,...);

And for handling of dynamically changed keyboard layout you should process the WM_INPUTLANGCHANGE message.
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

What my article will show is if you ever had to do processing to a listbox without being able to just select all the items in it. My software Visual Studio 2008 crystal report v11 My issue was I wanted to add crystal report to a form and show…
Entering time in Microsoft Access can be difficult. An input mask often bothers users more than helping them and won't catch all typing errors. This article shows how to create a textbox for 24-hour time input with full validation politely catching …
This is Part 3 in a 3-part series on Experts Exchange to discuss error handling in VBA code written for Excel. Part 1 of this series discussed basic error handling code using VBA. http://www.experts-exchange.com/videos/1478/Excel-Error-Handlin…
Want to learn how to record your desktop screen without having to use an outside camera. Click on this video and learn how to use the cool google extension called "Screencastify"! Step 1: Open a new google tab Step 2: Go to the left hand upper corn…

916 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question