编码
文章平均质量分 59
普通网友
这个作者很懒,什么都没留下…
展开
-
c#中Marshal.Copy()方法的使用
c#中Marshal.Copy方法的使用Marshal.copy()方法用来在托管对象(数组)和非托管对象(IntPtr)之间进行内容的复制函数有很多重载,如下所示:Copy(array[]()[], Int32, IntPtr, Int32) 将一维的托管 8 位无符号整数数组中的数据复制到非托管内存指针。Copy(array[]()[], Int32, IntPtr, Int3原创 2011-12-13 10:59:35 · 36151 阅读 · 0 评论 -
Linux下编码转换(iconv函数族)
转自:http://www.linuxdiyf.com/viewarticle.php?id=45164在Linux上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现(针对文件进行转换) 一、利用iconv函数族进行编码转换 iconv函数族的头文件是iconv.h使用前需包含之:#include iconv函数族有三个函数,原型如下:(1转载 2011-12-14 21:55:57 · 16029 阅读 · 1 评论 -
iconv()函数进行编码转换时的一个注意点
是在做例子的时候发现的,尚不知道原因...iconv()将发送的消息从utf-8转为utf-16时,前面会增加了\377\376而在其他代码间转换时,没有发现类似的问题测试的时候包括了:utf-16->utf-8utf-16->ascIIutf-8->gb2312...原创 2012-03-27 10:34:04 · 673 阅读 · 0 评论 -
关于结构体的编码转换
使用环境:在网络通信中,使用结构体进行通信结构体如下:客户端(采用utf-16编码): [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] struct MsgHead { [MarshalAs(UnmanagedType.ByValArray, SizeConst原创 2012-03-27 11:37:05 · 114 阅读 · 0 评论 -
结构体编码转换中碰到的问题
使用环境:在网络通信中,使用结构体进行通信结构体定义如下:客户端(采用utf-16编码): [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] struct MsgHead { [MarshalAs(UnmanagedType.ByValArray, SizeCo原创 2012-03-27 12:42:13 · 826 阅读 · 0 评论 -
iconv() errno:E2BGI(OutBuf空间不够)
使用环境:ubuntu 11.10 Emacs C++出现错误:从uft-8转为unicode16时,碰到一个奇怪的问题,提示“errno:E2BGI”,即(OutBuf空间不够)uft-8转换成宽字节时,1个字节变为2个字节,即转换之后的unicode16码占2倍的空间,出错代码:原创 2012-03-14 08:55:55 · 997 阅读 · 0 评论 -
C# 中的编码转换实现
C#提供了封装的类,可以直接用于编码转换例如:ASCIIEncoding,UnicodeEncoding,Encoding等类但是在进行编码转换时,需要以byte[] 作为中介进行转换.Net平台默认使用UnicodeEncoding.Unicode(Encoding类)作为编码方式;示例代码:Encoding destEncoding = UnicodeEncoding.UT原创 2012-04-09 09:04:04 · 1512 阅读 · 0 评论 -
C#端和C++端套接字通信中的几个问题
(1) 从字符串转为固定大小的字符数组如:定义固定大小的结构体:(使用命名空间:using System.Runtime.InteropServices;) [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)] struct OnlineUsrInfo { [Marsh原创 2011-12-19 22:59:47 · 1366 阅读 · 1 评论 -
Linux下转换字符集(UTF8转换)
Linux下转换字符集(UTF8转换) 借鉴此文自己已成功在LInux上实现gtk中 从UTF8到GB的转换 在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码。 一、利用iconv函数族进行编码转换 iconv函数族的头文件是iconv.h,使用前需包含之。 #include ic转载 2012-03-23 09:10:31 · 125 阅读 · 0 评论 -
MultiByteToWideChar和WideCharToMultiByte用法详解
部分参考:百度百科http://blog.csdn.net/leitianjun/article/details/5605410注意:这两个函数是由Windows提供的转换函数,不具有通用性C语言提供的转换函数为mbstowcs()/wcstombs()一、函数简单介绍涉及到的头文件:函数所在头文件:windows.h#inc原创 2012-03-22 14:12:55 · 25005 阅读 · 1 评论 -
ANSI码
原先以为Ansi编码是只有ANSI(美国国家标准协会)定义的ASCii码,后来发现这种认识是错误的...不同的国家和地区制定了不同的标准,由此产生了 GB2312,BIG5,,JIS 等各自的编码标准。这些使用 2 个字节来代表一个字符的各种汉字延伸编码方式,也称为 ANSI 编码。在美国,ANSI编码的代表是:ASCII(有7位和8位两种);在简体中文系统下,ANSI 编码的代表是:原创 2012-03-27 10:26:15 · 1025 阅读 · 0 评论 -
Linux下char类型可能带来的问题
问题起因:linux下C++采用utf-8编码方式,因此char类型不是单纯的一个字符一个字节。一个英文字符占一个字节,而一个中文字符则不只占了一个字节(具体查看Unicode编码方案简介及实现一文)。如下所示,分别输出中文的“王子”和其中文拼音的“wangzi”代码: char name[16]={0}; strcpy(name, "WangZi");原创 2011-12-14 13:18:55 · 4216 阅读 · 0 评论 -
Unicode编码方案简介及编码实现
部分摘自:维基百科(http://zh.wikipedia.org/wiki/Unicode)百度知道(http://baike.baidu.com/view/40801.htm)为了使内容简练,所以删去了很多东西。如果查看详细内容,请查看上面的链接。大概来说,Unicode 编码系统可分为编码方式和实现方式两个层次。编码方式Unicode是国际组织制定的可以容纳世界上原创 2011-12-14 21:08:28 · 3457 阅读 · 0 评论 -
C#中的编码实验
在C#中,默认使用Unicode码,因此一个char占2个byte实验1:通过ASCIIEncoding类进行转换char和byte string name = "xuwei"; byte[] bName = ASCIIEncoding.ASCII.GetBytes(name.ToCharArray()); int原创 2011-12-13 08:58:46 · 719 阅读 · 0 评论 -
iconv() errno:EILSEQ(InBuf多字节序无效)
环境:Linux,C++问题:在发送消息时,需要将utf-8编码转换为utf-16编码,因此需要用到iconv()函数族在用iconv()函数进行转换时,出现了错误,提取errno得到EILSEQ错误,即待转换的char*所指向的内容多字节序无效(个人理解为有乱码)探查原因:调试程序,发现原来是自己结构体没有填充完善造成的。(粗心害死人)原因:在转换前,内存空间是进原创 2011-12-21 10:40:55 · 5920 阅读 · 0 评论 -
从数据库中读取文本类型(char(16))字段时的bug(不算是err)
环境:数据库(普遍适用),C#出错原因:从数据库里读取用户名,如name="xuwei "代码:读取的代码如下所示:while (usrDataReader.Read()) { nRow++; string usrName = usrDataRea原创 2011-12-20 21:17:35 · 1104 阅读 · 0 评论 -
用C++读写unicode文本
转自:http://www.cnblogs.com/WeedQian/archive/2009/12/28/1634478.html字符类型char, wchar_t, TCHAR,最熟悉的char是单字节字符,适用于ANSI编码;wchar_t是双字节的宽字符类型,适用于unicode编码;TCHAR是一个宏,在ANSI坏境下定义为char,unicode坏境下定义为wchar_t。转载 2011-12-11 10:46:44 · 7608 阅读 · 0 评论 -
C#端和C++端套接字通信中遇到的编码问题
环境:Windows, VS2010注意事项:Windows下的wchar_t与Linux下的wchar_t不同(在Windows下占2字节;而在Linux下则占4字节)正题:由于C#端和C++端的编码方式不同,因此在通过套接字编程时,会有一些问题C#使用Unicode码,一个char占两个byte;而C++使用ANSI码,一个char占用一个byte所以,为了统一两者之间的不原创 2011-12-13 09:24:54 · 2103 阅读 · 0 评论 -
Unicode与Ansi的区别
转自:http://www.cppblog.com/lapcca/archive/2010/05/06/114649.htmlUnicode与Ansi是两种不同的编码方式标准,Ansi中的字符采用8bit,而Unicode中的字符采用16bit。(对于字符,Ansi以单字节存放英文字符,以双字节存放中文等字符;而Unicode下,英文和中文的字符都以双字节存放)Unicode码也是一种转载 2011-12-14 13:51:14 · 3417 阅读 · 0 评论 -
mbstowcs()/wcstombs()
参考:http://blog.sina.com.cn/s/blog_55c1b83b0100wbah.html本文介绍两个由C语言提供的宽字符(wchar_t类型)和多字节字符( 一个字符用一个或者多个字节表示) 转换函数,因此具有通用性(在Windows/Linux系统中都可以使用):所需头文件:stdlib.h#include ( 1 ) mbstowcs()功能:把多原创 2011-12-12 14:52:38 · 21846 阅读 · 5 评论 -
setlocale()/_wsetlocale()函数的使用
在C运行库提供的多字节字符-宽字符转换函数:mbstowcs()/wcstombs()中,需要用到全局变量locale( locale encoding ),以指定多字节字符的编码类型1. 功能:用来定义全局变量:locale(locale encoding)头文件:setlocaleANSI, Win 95, Win NT_ws原创 2012-03-23 16:45:27 · 4715 阅读 · 1 评论 -
wchar_t类型的几个函数
wchar_t是C/C++的字符数据类型,是一种扩展的字符存储方式。在Windows下,wchar_t占2个字节(byte);在Linux下,wchar_t占4个字节wchar_t类型主要用在国际化程序的实现中,但它不等同于Unicode编码。Unicode编码的字符一般以wchar_t类型存储。char是8位字符类型,最多只能包含256种字符,许多外文字符集所含的字符数目超过256个原创 2011-12-14 08:06:52 · 8039 阅读 · 1 评论 -
Windows API GB2312/Unicode/UTF-8转换
转自:http://www.cppblog.com/fdsajhg/archive/2010/09/03/125770.aspxBYTE to Unicode//////////////BYTE dwByte[200];wchar_t dwcharw[200];for(int i=0;i<200;i++){dwcharw[i]=dwByte[i];}(char--for-转载 2012-04-27 14:31:12 · 2849 阅读 · 0 评论