请问Unicode和编码的转换问题.100分,不成敬意.
请问Unicode的汉字和编码制的转换.还包括两种代码的转换
分为两部分:
1.我有 554A 这个码,怎么显示出"啊"字.
2.就是反向的问题了.
我刚刚接触到Unicode.一窍不通,请各位详细指点.多谢!多谢
另外我是在标准C下作的,所以所涉及到的编译条件什么的,也请指点.
问题点数:100、回复次数:9Top
1 楼topwork(日光)回复于 2003-12-04 13:57:34 得分 5
这也不算什么unicode问题:
char buf[]={0x55 , 0x4a};
这就可以显示出“阿”Top
2 楼arvid_gs(west)回复于 2003-12-04 13:57:59 得分 10
MultiByteTOWideChar
WideCharToMultiByte
#include <windows.h>
#include <lm.h>
#include <stdio.h>
BOOL GetFullName( char *UserName, char *Domain, char *dest )
{
WCHAR wszUserName[256]; // Unicode user name
WCHAR wszDomain[256];
LPBYTE ComputerName;
struct _SERVER_INFO_100 *si100; // Server structure
struct _USER_INFO_2 *ui; // User structure
// Convert ANSI user name and domain to Unicode
MultiByteToWideChar( CP_ACP, 0, UserName,
strlen(UserName)+1, wszUserName,
sizeof(wszUserName)/sizeof(wszUserName[0]) );
MultiByteTOWideChar( CP_ACP, 0, Domain,
strlen(Domain)+1, wszDomain, sizeof(wszDomain)/sizeof(wszDomain[0]) );
// Get the computer name of a DC for the domain.
NetGetDCName( NULL, wszDomain, &ComputerName );
// Look up the user on the DC.
if( NetUserGetInfo( (LPWSTR) ComputerName,
(LPWSTR) &wszUserName, 2, (LPBYTE *) &ui ) )
{
printf( "Error getting user information.\n" );
return( FALSE );
}
// Convert the Unicode full name to ANSI.
WideCharToMultiByte( CP_ACP, 0, ui->usri2_full_name, -1,
dest, 256, NULL, NULL );
return (TRUE);
}
Top
3 楼afantict(非洲土狼)回复于 2003-12-04 14:00:21 得分 5
什么unicode不unicode的
知道WideCharToMultiByte还有这个函数倒过来
再瞎弄弄就差不多了Top
4 楼arvid_gs(west)回复于 2003-12-04 14:08:04 得分 10
UTF-8码转换为一般的字符串:
#include " Windows.h "
int main(void)
{
char str [ 256 ] = {( char )0xE4, ( char ) 0xBD, ( char ) 0xA0, ( char ) 0xE5 ,
( char)0xA5 ,(char)0xBD, (char)0x61, (char)0x62 ,(char)0x63,(char)0} ; //一段UTF-8编码
WCHAR* strA;
int i= MultiByteToWideChar ( CP_UTF8 , 0 ,(char*) str ,-1 ,NULL,0);
strA = new WCHAR[i];
MultiByteToWideChar ( CP_UTF8 , 0 ,( char * ) str, -1, strA , i );
i= WideCharToMultiByte(CP_ACP,0,strA,-1,NULL,0,NULL,NULL);
char *strB=new char[i];
WideCharToMultiByte (CP_ACP,0,strA,-1,strB,i,NULL,NULL);
//strB即为所求
delete []strA;
delete []strB;
return 0;
}
Top
5 楼wangweixing2000(星(inspiration(灵感)))回复于 2003-12-04 14:13:33 得分 10
A2CW (LPCSTR) -> (LPCWSTR)
A2W (LPCSTR) -> (LPWSTR)
W2CA (LPCWSTR) -> (LPCSTR)
W2A (LPCWSTR) -> (LPSTR)
T2COLE (LPCTSTR) -> (LPCOLESTR)
T2OLE (LPCTSTR) -> (LPOLESTR)
OLE2CT (LPCOLESTR) -> (LPCTSTR)
OLE2T (LPCOLESTR) -> (LPCSTR)
用这些宏的时候必须加上这一句:USES_CONVERSION;
eg:
void CallSomeMethod(int ii, LPCTSTR lpsz)
{
USES_CONVERSION;
pI->SomeMethod(ii, T2COLE(lpsz));
}
Top
6 楼bluebohe(薄荷)回复于 2003-12-04 14:14:22 得分 60
554A 确实是啊的UNICODE编码,这样转换
#include <comdef.h>
WCHAR* str1=L"啊dsfa";//一个UNICODE字符串
_bstr_t str2=str1;
char* str3=str2;//str3就是普通字符串
反过来也一样
char* str3="啊dsfa";//普通字符串
_bstr_t str2=str3;
WCHAR* str1=str2;
Top
7 楼liuguangzhou(光子)回复于 2003-12-04 16:14:58 得分 0
topwork(日光)的方法不行啊,
bluebohe(薄荷)的方法最简单,那再请问,怎么把554A表示出来,我都晕了。拜托了!Top
8 楼bluebohe(薄荷)回复于 2003-12-04 16:22:47 得分 0
WCHAR str[10];
str[0]=0x554a;
str[1]=0;
_bstr_t str1=str;
char *str2=str1;
pDC->TestOut(0,0,str2);Top
9 楼liuguangzhou(光子)回复于 2003-12-04 16:53:38 得分 0
多谢几位!在你们看来这问题很简单,可是对我这个初学者来说,你们的帮助对我太大了。多谢你们!Top
相关问题
- 编码转换的问题(Unicode, ASCII)?
- GB2312编码转换到Unicode编码的问题
- gb18030编码格式怎么转换成UNICODE编码格式????
- 各位大侠,请问在VC中如何实现Unicode编码.(或把ANSI编码转换为Unicode编码.)
- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~编码转换
- 如何将一个gb2312编码的字串转换成unicode编码???
- 如何将unicode编码转换成普通的utf-8或者ISO编码
- 如何把unicode编码的字符串转换成GB232编码的字串?
- 如何用javascript把ASCII编码的转换为Unicode的?
- Unicode编码怎样能转换成汉字?




