|
Thanks Nemanja,
Your reply is clear. For the same wide character string in Czech, I am not sure whether converting to Czech codepage (1250) or CP_UTF8 will making information lose ... i.e. resulting in ?? (0x3F) character. Any experiences?
regards,
George
|
|
|
|
|
George_George wrote: For the same wide character string in Czech, I am not sure whether converting to Czech codepage (1250) or CP_UTF8 will making information lose ... i.e. resulting in ?? (0x3F) character.
If you know for sure the wide string contains only Czech (or other Central Europian) characters, you can convert it to either CP1250 or UTF-8 without any loss. In any case, you don't need to mess with the system language settings - just use the correct codepage parameter in WideStringToMultiChar.
If you don't know for sure the wide string contains only Central Europian characters, you can still safely convert to UTF-8, but not to CP1250.
|
|
|
|
|
Great Nemanja!
But why not safe with CP1250?
Nemanja Trifunovic wrote: If you don't know for sure the wide string contains only Central Europian characters, you can still safely convert to UTF-8, but not to CP1250.
regards,
George
|
|
|
|
|
George_George wrote: But why not safe with CP1250?
If a wide string contains a non-Central Europian character, say - U+03A8 (Greek capital Psi); it has no representation in CP1250 and will appear as a replacement character (probably question mark) after the conversion.
|
|
|
|
|
Thanks for your clarification, Nemanja!
My question is answered.
regards,
George
|
|
|
|
|
Nemanja Trifunovic wrote: here is 1-1 mapping between UTF-16 (wide chars on Windows) and UTF-8 (both are simply different encoding forms for Unicode character set).
You're right indeed.
Nemanja Trifunovic wrote: On the other hand, there is no 1-1 mapping between Unicode and CP1250.
There is 1-1 mapping for the subset representing Czech characters, I suppose.
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler.
-- Alfonso the Wise, 13th Century King of Castile.
[my articles]
|
|
|
|
|
CPallini wrote: There is 1-1 mapping for the subset representing Czech characters, I suppose.
Correct. It is just not always easy to be sure that the wide string contains only the Czech subset.
|
|
|
|
|
George_George wrote: I need to know the wide character (unicode) and multibyte (UTF-8) values of a character string of czech.
Is this string provided as a user input, or you are dealing with a hard-coded string literal?
Anyway, to get a UTF-8 representation of a Unicode string, there is no need to change the system language. Either use WideCharToMultiByte with codepage set to CP_UTF8, or use a third-party library (like the one you see in my signature )
|
|
|
|
|
Thanks Nemanja,
Nemanja Trifunovic wrote: Anyway, to get a UTF-8 representation of a Unicode string, there is no need to change the system language. Either use WideCharToMultiByte with codepage set to CP_UTF8, or use a third-party library (like the one you see in my signature )
1. Change system language settings before invoking WideCharToMultiByte, right?
2. Should I use UTF-8 code page or use some Czech code page?
regards,
George
|
|
|
|
|
George_George wrote: 1. Change system language settings before invoking WideCharToMultiByte, right?
Don't
George_George wrote: 2. Should I use UTF-8 code page or use some Czech code page?
UTF-8
|
|
|
|
|
Thanks Nemanja!
From your reply and CPallini's reply, I am confused.
This is what you mentioned, and you think using UTF-8 code page to convert wide character to multibyte character is ok.
Nemanja Trifunovic wrote: George_George wrote:
2. Should I use UTF-8 code page or use some Czech code page?
UTF-8
2.
This is what CPallini mentioned,
http://www.codeproject.com/script/Forums/View.aspx?fid=1647&select=2401259&fr=107#xx2401259xx[^]
He said using UTF-8 is not always safe and we should use code page 1250?
regards,
George
|
|
|
|
|
George_George wrote: This is what you mentioned, and you think using UTF-8 code page to convert wide character to multibyte character is ok.
What I say is simply the following: Both UTF-16 (stored in "wide characters") and UTF-8 (stored in "multibyte characters") are different encoding forms of the same character set (Unicode) and there is absolutelly no risk of conversion loss between the two. In fact, you don't even need to use WinAPI to do the conversion - just take a look at my utf8 - cpp library to see how it is done manually.
|
|
|
|
|
Dear all,
we can invoke our VC++ dlls from backgroud services.. like from "services.msc",
i have adoubt when we are writing such services what should be taken care so that it comes under "services.msc" not in "dcomcnfg"
and what is the difference in those two types ....
Thanks in advance
T@SU
|
|
|
|
|
After reading your post several times I have no idea what you trying to say or ask. Since no one else replied to you I imagine others are having similar difficulties understanding you.
led mike
|
|
|
|
|
I have a requirement where we need to connect to unix machine, run some commands and capture output(on the lines of what "putty" does).
I wanted to know how it can be accomplished through C++ code. We can use SSH, Rlogin connectivity.
Thanks
Amit
|
|
|
|
|
|
Thanks a ton Maxwell!
It really helped.
|
|
|
|
|
Suppose the full path is :
C:\Program Files\codeproject.txt
I want to extract the file name codeproject.txt .
Of course I can use CString class to find the last '\', and then Mid to get the filename, but is there some API can do this daily job?
Thank you
A Chinese VC++ programmer
|
|
|
|
|
Since you want to use API (Windows SDK), the function below meets your need.
But CFile is even convenient for you though.
BOOL GetFileInformationByHandleEx(
HANDLE hFile,
FILE_INFO_BY_HANDLE_CLASS cls,
LPVOID info,
DWORD bufsize
);
FILE_NAME_INFO MyStruct = {0};
bool b = GetFileInformationByHandleEx(hFile, FileNameInfo, &MyStruct, sizeof(FILE_NAME_INFO));
Maxwell Chen
|
|
|
|
|
OK, Thank you Maxwell Chen
Both of the ways you suggested are convenient. But the question is all of them need a file HANDLE. I just want to get the filename given its fullpath.
A Chinese VC++ programmer
|
|
|
|
|
|
Thank you nave!
I think I have got the answer:_splitpath
A Chinese VC++ programmer
|
|
|
|
|
You can use the CFileFind
CFileFind cf;
cf.FindFile("C:\\Program Files\\codeproject.txt");
cf.FindNext();
CString strFileName = cf.GetFileName();
Rgds
Abhay..
|
|
|
|
|
zengkun100 wrote: I think I have got the answer:_splitpath
MSDN Says: _splitpath is deprecated because more secure versions are available, see _splitpath_s , _wsplitpath_s .
Nobody can give you wiser advice than yourself. - Cicero
.·´¯`·->Rajesh<-·´¯`·.
Codeproject.com: Visual C++ MVP
|
|
|
|
|
Though some API's have been mentioned above by our codeproject friends, u can also write such functions. If u know 'C' language very well and ofcourse, its basics (people having lot of experience also doesn't know the basics), u can easily write such functions.
Though u got the API, still I'll strongly recommend u to try writing such function.
Come online at:-
jubinc@skype
|
|
|
|