如何写论文?写好论文?免费论文网提供各类免费论文写作素材!
当前位置:免费论文网 > 美文好词 > 优质好文 > 查看linux系统编码

查看linux系统编码

来源:免费论文网 | 时间:2017-05-04 06:05 | 移动端:查看linux系统编码

篇一:linux乱码与编码格式--su

在windows编辑的文件在LINUX下有时会出现乱码,是因为编码格式不一样。

LINUX下英文环境默认是UTF-8编码,而LINUX下中文环境默认是gb2312等编码。 可在终端中直接修改显示格式:terminal-》set Char。。。》addandremov》gb2312 也可在windows下把文件另存为UTF-8格式。

篇二:打印Linux系统错误编码及提示

系统运维工程师和系统开发工程师在日常工作中,经常会遇到此类问题“当你进行了一些不当操作,系统会给你错误提示”,这些错误提示在操作系统中都是错误编码的,每一个提示对应一个错误编码,错误编码供程序代码中方便调用,接下来我们会打印出linux操作系统的错误编码及提示,如下:

一、系统环境

系统版本:

内核版本:

二、程序代码

代码如下:

三、编译运行

结果如下:

[root@CentOS6 erro_num]# gcc error_num.c

[root@centos6 erro_num]# ./a.out

0:Success

1:Operation not permitted

2:No such file or directory

3:No such process

4:Interrupted system call

5:Input/output error

6:No such device or address

7:Argument list too long

8:Exec format error

9:Bad file descriptor

10:No child processes

11:Resource temporarily unavailable

12:Cannot allocate memory

13:Permission denied

14:Bad address

15:Block device required

16:Device or resource busy

17:File exists

18:Invalid cross-device link

19:No such device

20:Not a directory

21:Is a directory

22:Invalid argument

23:Too many open files in system

24:Too many open files

25:Inappropriate ioctl for device

26:Text file busy

27:File too large

28:No space left on device

29:Illegal seek

30:Read-only file system

31:Too many links

32:Broken pipe

33:Numerical argument out of domain

34:Numerical result out of range

35:Resource deadlock avoided

36:File name too long

37:No locks available

38:Function not implemented

39:Directory not empty

40:Too many levels of symbolic links

41:Unknown error 41

42:No message of desired type

43:Identifier removed

44:Channel number out of range

45:Level 2 not synchronized

46:Level 3 halted

47:Level 3 reset

48:Link number out of range

49:Protocol driver not attached

50:No CSI structure available

51:Level 2 halted

52:Invalid exchange

53:Invalid request descriptor

54:Exchange full

55:No anode

56:Invalid request code

57:Invalid slot

58:Unknown error 58

59:Bad font file format

60:Device not a stream

61:No data available

62:Timer expired

63:Out of streams resources

64:Machine is not on the network

65:Package not installed

66:Object is remote

67:Link has been severed

68:Advertise error

69:Srmount error

70:Communication error on send

71:Protocol error

72:Multihop attempted

73:RFS specific error

74:Bad message

75:Value too large for defined data type

76:Name not unique on network

77:File descriptor in bad state

78:Remote address changed

79:Can not access a needed shared library

80:Accessing a corrupted shared library

81:.lib section in a.out corrupted

82:Attempting to link in too many shared libraries

83:Cannot exec a shared library directly

84:Invalid or incomplete multibyte or wide character

85:Interrupted system call should be restarted

86:Streams pipe error

87:Too many users

88:Socket operation on non-socket

89:Destination address required

90:Message too long

91:Protocol wrong type for socket

92:Protocol not available

93:Protocol not supported

94:Socket type not supported

95:Operation not supported

96:Protocol family not supported

97:Address family not supported by protocol

98:Address already in use

99:Cannot assign requested address

100:Network is down

101:Network is ueachable

102:Network dropped connection on reset

103:Software caused connection abort

104:Connection reset by peer

105:No buffer space available

106:Transport endpoint is already connected

107:Transport endpoint is not connected

108:Cannot send after transport endpoint shutdown

109:Too many references: cannot splice

110:Connection timed out

111:Connection refused

112:Host is down

113:No route to host

114:Operation already in progress

115:Operation now in progress

116:Stale NFS file handle

117:Structure needs cleaning

118:Not a XENIX named type file

119:No XENIX semaphores available

120:Is a named type file

121:Remote I/O error

122:Disk quota exceeded

123:No medium found

124:Wrong medium type

125:Operation canceled

126:Required key not available

127:Key has expired

128:Key has been revoked

129:Key was rejected by service

130:Owner died

131:State not recoverable

如果你看过nginx-1.0.10源码,里面有一个类似的错误编码预定义 135个,在

objs/ngx_auto_config.h 中,#define NGX_SYS_NERR135,事实证明,这种思想是非常可取的,我们自己写软件的时候,不妨尝试一下?

rdzs.shudaoge.com/儒道至圣最新章节

篇三:Windows和Linux的字符编码互转的方法

前谈过一篇关于Linux下面Unicode使用的文章。那个主要是针对多字节和宽字符的转换而谈的。今天说的有些类似,主要是windows下面关于字符编码转换和Linux下面的不同。

我移植的那部分程序中,有函数是用来实现UTF-8和GBK之间的转换的。其实其他很多不同类型的字符之间转换都可以用这种方法。

先说windows。因为windows下面没有函数可以实现这一功能,所以得自己写。思路很简单,就是利用之前讲过的那两个函数来实现,即:MultiByteToWideChar和WideCharToMultiByte来实现。先将其中一种编码(如UTF-8)利用MultiByteToWideChar转换为宽字节,然后再利用WideCharToMultiByte转换为另一种编码(如GBK)。反过来也是一样的。

附加代码:utf-8 转为 gbk

#if WIN32

bool Utf8ToGbk(const void *utf8Str,char *pStr)

{

//获取转换到gbk编码后 所需的字符空间长度; nLen = ::WideCharToMultiByte(CP_ACP,0,unicodeStr,-1,NULL,NULL,NULL,NULL); CHAR *gbkStr = new CHAR[nLen+1]; //unicode字符串空间; //转换到gbk编码; nLen = ::WideCharToMultiByte(CP_ACP,0,unicodeStr,-1,gbkStr,nLen,NULL,NULL); if (!nLen){} strcpy(pStr,gbkStr); delete[] gbkStr; delete[] gbkStr; return false; //获取转换到unicode编码后 所需的字符空间长度; nLen = ::MultiByteToWideChar(CP_UTF8,0,(char*)utf8Str,-1,NULL,NULL); WCHAR *unicodeStr = new WCHAR[nLen+1]; //unicode字符串空间; //转换到unicode编码; nLen = ::MultiByteToWideChar(CP_UTF8,0,(char*)utf8Str,-1,unicodeStr,nLen); if (!nLen){} // -------------------- // delete[] unicodeStr; return false; if (utf8Str == NULL){ } int nLen = 0; return false;

} return true;

#endif

下面给出代码: LONG UTF8ToGBK(const void * lpUTF8Str, string & str)

{

if(lpUTF8Str == NULL) return -1;

int nRetLen = 0;

//获取转换到Unicode编码后所需要的字符空间长度

nRetLen = ::MultiByteToWideChar(CP_UTF8, 0,

(char *)lpUTF8Str, -1, NULL, NULL);

WCHAR *lpUnicodeStr = new WCHAR[nRetLen + 1];

//为Unicode字符串空间

//转换到Unicode编码

nRetLen = ::MultiByteToWideChar(CP_UTF8, 0,

(char *)lpUTF8Str, -1, lpUnicodeStr, nRetLen);

if(!nRetLen)

{

delete []lpUnicodeStr; return -1;

}

//获取转换到GBK编码后所需要的字符空间长度

nRetLen = ::WideCharToMultiByte(CP_ACP, 0, lpUnicodeStr,

-1, NULL, NULL, NULL, NULL);

CHAR *lpGBKStr = new CHAR[nRetLen + 1];

nRetLen = ::WideCharToMultiByte(CP_ACP, 0, lpUnicodeStr,

-1, (char *)lpGBKStr, nRetLen, NULL, NULL);

//转换到GBK编码

if(!nRetLen)

{

delete []lpUnicodeStr;

delete []lpGBKStr;

return -2;

}

str = lpGBKStr;

delete []lpUnicodeStr;

delete []lpGBKStr;

return 0;

}

再来看Linux,它已经提供了函数可以实现这一功能,不仅如此,Linux还可以实现批量文件的字符编码转换呢。只不过在Linux下面支持的字符集多少会和Windows的不同,所以一定得先查字符集有哪些,再去使用函数。这里推荐使用locale –m命令,得到的字符集比较全。

实现这一功能的正是iconv函数族,包含以下三个函数:

iconv_t iconv_open(const char *tocode, const char *fromcode);

此函数说明将要进行哪两种编码的转换,tocode是目标编码,fromcode是原编码,该函数返回一个转换句柄,供以下两个函数使用。

size_t iconv(iconv_t cd,char **inbuf,size_t *inbytesleft,char **outbuf,size_t *outbytesleft);

此函数从inbuf中读取字符,转换后输出到outbuf中,inbytesleft用以记录还未转换的字符数,outbytesleft用以记录输出缓冲的剩余空间。

int iconv_close(iconv_t cd);

此函数用于关闭转换句柄,释放资源。

下面给demo代码:

#include <stdio.h>

#include <iconv.h>

#include <string.h>

#define BUFLEN 256

char outbuf[BUFLEN];

char inbuf[BUFLEN] = "characters convertion";

int main()

{

char *pin = inbuf;

char *pout = outbuf;

int inlen = strlen(pin);

int outlen = BUFLEN;

int retsize;

iconv_t cd;

cd = iconv_open("UTF-8", "GBK");

if((iconv_t)-1 == cd) {

perror("iconv_open error");

return -1;

}

retsize = iconv(cd, &pin, (size_t *)&inlen, &pout, (size_t *)&outlen);

if((size_t)-1 == retsize) {

perror("iconv error");

return -2;

}

if(outlen > 0) {

printf("%s\n", outbuf);

}

iconv_close(cd);

return 0;

}


查看linux系统编码》由:免费论文网互联网用户整理提供;
链接地址:http://www.csmayi.cn/meiwen/30614.html
转载请保留,谢谢!
相关文章