Solved

How to get current codepage?

Posted on 2004-09-07
13
1,444 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
Comment Utility
0
 
LVL 2

Author Comment

by:serg111
Comment Utility
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
Comment Utility
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
 
LVL 2

Author Comment

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

Expert Comment

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

Author Comment

by:serg111
Comment Utility
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
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 7

Expert Comment

by:jimwasson
Comment Utility
Borland C -- which version exactly?
0
 
LVL 2

Author Comment

by:serg111
Comment Utility
This is Version 5.02

0
 

Accepted Solution

by:
hupe earned 250 total points
Comment Utility
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
Comment Utility
I've got 2 errors with this code :-(

undefined symbol: langLCID
undefined symbol: LOCALE_RETURN_NUMBER
0
 

Expert Comment

by:hupe
Comment Utility
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
Comment Utility
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
Comment Utility
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

How to improve team productivity

Quip adds documents, spreadsheets, and tasklists to your Slack experience
- Elevate ideas to Quip docs
- Share Quip docs in Slack
- Get notified of changes to your docs
- Available on iOS/Android/Desktop/Web
- Online/Offline

Join & Write a Comment

zlib is a free compression library (a DLL) on which the popular gzip utility is built.  In this article, we'll see how to use the zlib functions to compress and decompress data in memory; that is, without needing to use a temporary file.  We'll be c…
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…
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…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…

762 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

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now