c语言库函数实现编码转换 c语言编码后如何运行

如何用C语言实现汉字和Unicode编码的转换 求程序void main()
{
char a[3];
wchar_t str;
printf("输入一个汉字:\n");
gets(a);
MultiByteToWideChar(CP_ACP, 0, a, -1, str, 1);
printf("%s", a);
printf("字Unicode编码为%x\n",(unsigned short)str);
}
linux C语言:如何在ISO8859-1和GB2312字符编码之间互相转换JAVA有一个public String(byte bytes[], Charset charset)函数可以用指定字节数组和编码来构造字符串 。一个public byte[] getBytes(Charset charset)函数把字符串按指定编码来得到字节数组 。可以用这两个函数来实现编码转换 。
下面是一个简单c语言库函数实现编码转换的例子,注意一下例子中c语言库函数实现编码转换的文字本身的编码,最好在自己的环境中用gb2312重新输入,不然可能是乱码 。当然转换后输出肯定有一个是乱码,也肯能都是乱码 。根据c语言库函数实现编码转换你的编辑器的编码格式有关 。public class EncodingTest
{
public static void main(String[] args)
{
try
{
String gb = new String("国标2312".getBytes(),"gb2312");
System.out.println(gb);
byte [] b = gb.getBytes("gb2312");
String ios = new String(b,"ISO-8859-1");
System.out.println(ios);
} catch (UnsupportedEncodingException e)
{
e.printStackTrace();
}
}
}
请问如何用C语言实现汉字 , 和Unicode编码的转换?字转换:wctomb、mbtowc,wc 指 Wide charactor,mb 指 Multi-byte 。\r\n字符串转换:wcstombs、mbstowcs,wcs 和 mbs 的 s 指 string 。\r\n\r\n这 4 个函数是 C 标准函数库函数中的 。如果只是在 Windows 平台下编程,可直接调用 Windows API 函数 WideCharToMultiByte 和 MultiByteToWideChar 实现 。但是如果调用标准库函数的话 , 在 Linux下也是有效的 。调用标准库函数,首先必须包含 locale.h 并调用 setlocale(LC_ALL, "") 后才能正确转换 。Windows 下的 Multi-byte 是 ANSI 编码的 , Wide charactor 是 Unicode (UTF-16) 编码 , 而 Linux 下的 Multi-byte 是 UTF-8 编码的,Wide charactor 是 Unicode (UTF-32) 编码 。\r\n\r\n#include \r\n#include \r\n#include \r\n\r\nint main(void)\r\n{\r\nchar str[12];\r\nwchar_t wstr[] = { 0x52B3, 0x788C, 0 };\r\nsetlocale(LC_ALL, "");\r\nwcstombs(str, wstr, sizeof(str)/sizeof(char));\r\nprintf("%s", str);\r\nreturn 0;\r\n}
C语言如何把一个字符串转换成数字?C语言有atoi、atol、atof等库函数c语言库函数实现编码转换 , 可分别把ASCII编码的字符串转化为int、long、float类型的数字 。\x0d\x0a头文件c语言库函数实现编码转换:stdlib.h\x0d\x0a函数原型c语言库函数实现编码转换:int atoi(const char* nptr);\x0d\x0a(另外两个类似)\x0d\x0a\x0d\x0a举个例子c语言库函数实现编码转换:\x0d\x0achar *str="123";\x0d\x0aint num=atoi(str);\x0d\x0a执行后c语言库函数实现编码转换 , num的值被初始化为123
怎样用C语言实现汉字和ASCII码到UNICODE码的转换?用MultiByteToWideChar和WideCharToMultiByte可以做到编码的转换 。
MultiByteToWideChar是一个windows API 函数,该函数映射一个字符串到一个宽字符(unicode)的字符串 。
函数原型:
int MultiByteToWideChar(
UINT CodePage,
DWORD dwFlags,
LPCSTR lpMultiByteStr,
int cchMultiByte,
LPWSTR lpWideCharStr,
int cchWideChar
);
参数:
CodePage:指定执行转换的字符集 , 这个参数可以为系统已安装或有效的任何字符集所给定的值 。你也可以指定其为下面的任意一值:
CP_ACP:ANSI字符集;CP_MACCP:Macintosh代码页;CP_OEMCP:OEM代码页;
CP_SYMBOL:符号字符集(42);CP_THREAD_ACP:当前线程ANSI代码页;
CP_UTF7:使用UTF-7转换;CP_UTF8:使用UTF-8转换 。
dwFlags:一组位标记用以指出是否未转换成预作或宽字符(若组合形式存在),是否使用象形文字替代控制字符,以及如何处理无效字符 。你可以指定下面是标记常量的组合,含义如下:
MB_PRECOMPOSED:通常使用预作字符——就是说 , 由一个基本字符和一个非空字符组成的字符只有一个单一的字符值 。这是缺省的转换选择 。不能与
MB_COMPOSITE值一起使用 。
MB_COMPOSITE:通常使用组合字符——就是说,由一个基本字符和一个非空字符组成的字符分别有不同的字符值 。不能与MB_PRECOMPOSED值一起使用 。
MB_ERR_INVALID_CHARS:如果函数遇到无效的输入字符,它将运行失败,且GetLastErro返回ERROR_NO_UNICODE_TRANSLATION值 。
MB_USEGLYPHCHARS:使用象形文字替代控制字符 。
组合字符由一个基础字符和一个非空字符构成,每一个都有不同的字符值 。每个预作字符都有单一的字符值给基础/非空字符的组成 。在字符è中 , e就是基础字符,而重音符标记就是非空字符 。
函数的缺省动作是转换成预作的形式 。如果预作的形式不存在,函数将尝试转换成组合形式 。
标记MB_PRECOMPOSED和MB_COMPOSITE是互斥的,而标记MB_USEGLYPHCHARS和MB_ERR_INVALID_CHARS则不管其它标记如何都可以设置 。
lpMultiByteStr:指向将被转换字符串的字符 。
cchMultiByte:指定由参数lpMultiByteStr指向的字符串中字节的个数 。如果lpMultiByteStr指定的字符串以空字符终止 , 可以设置为-1(如果字符串不是以空字符中止,设置为-1可能失败,可能成功),此参数设置为0函数将失败 。
lpWideCharStr:指向接收被转换字符串的缓冲区 。
cchWideChar:指定由参数lpWideCharStr指向的缓冲区的宽字符个数 。若此值为零,函数返回缓冲区所必需的宽字符数,在这种情况下,lpWideCharStr中的缓冲区不被使用 。
返回值:
如果函数运行成功,并且cchWideChar不为零,返回值是由lpWideCharStr指向的缓冲区中写入的宽字符数;如果函数运行成功,并且cchWideChar为零,返回值是接收到待转换字符串的缓冲区所需求的宽字符数大小 。如果函数运行失败,返回值为零 。若想获得更多错误信息,请调用GetLastError函数 。它可以返回下面所列错误代码:
ERROR_INSUFFICIENT_BUFFER;ERROR_INVALID_FLAGS;
ERROR_INVALID_PARAMETER;ERROR_NO_UNICODE_TRANSLATION 。
WideCharToMultiByte,该函数映射一个unicode字符串到一个多字节字符串 。
函数原型:
int WideCharToMultiByte(
UINT CodePage, //指定执行转换的代码页
DWORD dwFlags, //允许你进行额外的控制,它会影响使用了读音符号(比如重音)的字符
LPCWSTR lpWideCharStr, //指定要转换为宽字节字符串的缓冲区
int cchWideChar, //指定由参数lpWideCharStr指向的缓冲区的字符个数
LPSTR lpMultiByteStr, //指向接收被转换字符串的缓冲区
int cchMultiByte, //指定由参数lpMultiByteStr指向的缓冲区最大值
LPCSTR lpDefaultChar, //遇到一个不能转换的宽字符,函数便会使用pDefaultChar参数指向的字符
LPBOOL pfUsedDefaultChar //至少有一个字符不能转换为其多字节形式,函数就会把这个变量设为TRUE
);
参数:
CodePage:指定执行转换的代码页,这个参数可以为系统已安装或有效的任何代码页所给定的值 。你也可以指定其为下面的任意一值:
CP_ACP:ANSI代码页;CP_MACCP:Macintosh代码页;CP_OEMCP:OEM代码页;
CP_SYMBOL:符号代码页(42);CP_THREAD_ACP:当前线程ANSI代码页;
CP_UTF7:使用UTF-7转换;CP_UTF8:使用UTF-8转换
返回值:
如果函数运行成功,并且cchMultiByte不为零 , 返回值是由 lpMultiByteStr指向的缓冲区中写入的字节数;如果函数运行成功,并且cchMultiByte为零,返回值是接收到待转换字符串的缓冲区所必需的字节数 。如果函数运行失败,返回值为零 。若想获得更多错误信息,请调用GetLastError函数 。它可以返回下面所列错误代码:
ERROR_INSUFFICIENT_BJFFER;ERROR_INVALID_FLAGS;
ERROR_INVALID_PARAMETER;ERROR_NO_UNICODE_TRANSLATION 。
注意:指针lpMultiByteStr和lpWideCharStr必须不一样 。如果一样,函数将失败,GetLastError将返回ERROR_INVALID_PARAMETER的值 。
Windows CE:不支持参数CodePage中的CP_UTF7和CP_UTF8的值,以及参数dwFlags中的WC_NO_BEST_FIT_CHARS值 。
【c语言库函数实现编码转换 c语言编码后如何运行】c语言库函数实现编码转换的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言编码后如何运行、c语言库函数实现编码转换的信息别忘了在本站进行查找喔 。

    推荐阅读