<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[校园网软件_提供成绩分析系统和答题卡阅卷系统]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[137-0819-7201]]></description>
<link>http://hi.baidu.com/myslan</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[sql创建主键为自增列的表]]></title>
        <link><![CDATA[http://hi.baidu.com/myslan/blog/item/2092163b7d05d8e215cecba5.html]]></link>
        <description><![CDATA[
		
		<div class="postTitle">
<p> CREATE TABLE [dbo].[Change] (<br>
 [ChangeID] Int IDENTITY primary key NOT NULL&nbsp;&nbsp;  ,<br>
 [cAssetNo] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,<br>
 [cAsset_Name] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,<br>
 [cAsset_Set] [varchar] (2500) COLLATE Chinese_PRC_CI_AS  NULL ,<br>
 [Emp_Id] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,<br>
 [cAsset_Status] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL ,<br>
 [Change_Date] [datetime]  NULL ,<br>
 [Change_EmployeeId] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,<br>
 )</p>
</div> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/myslan/blog/category/sql%D3%EF%BE%E4">sql语句</a>&nbsp;<a href="http://hi.baidu.com/myslan/blog/item/2092163b7d05d8e215cecba5.html#comment">查看评论</a>]]></description>
        <pubDate>2009-03-07  12:30</pubDate>
        <category><![CDATA[sql语句]]></category>
        <author><![CDATA[myslan]]></author>
		<guid>http://hi.baidu.com/myslan/blog/item/2092163b7d05d8e215cecba5.html</guid>
</item>

<item>
        <title><![CDATA[成绩分析软件为何不能导入学生成绩]]></title>
        <link><![CDATA[http://hi.baidu.com/myslan/blog/item/84e663c6cbe7cf1c9d163d7c.html]]></link>
        <description><![CDATA[
		
		<p>请仔细检查一下操作步骤，估计是遗忘了第三步。</p>
<p>第1步，准备年级学生名单<br>
---------------------------<br>
第2步，注册考试名称，并设置加权系数。（考前准备菜单）<br>
---------------------------<br>
第3步，这个步骤常常被遗忘，那就是&ldquo;准备考试登分表&rdquo;。（成绩录入菜单）<br>
---------------------------<br>
第4步，录入或导入学生成绩。</p>
<p>注意：对于一个年级的每一次新的考试都需要注册考试名称，而学生名单做一次就可以了，除非学生名单有变动。</p>
<p> </p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/myslan/blog/category/%B3%C9%BC%A8%B7%D6%CE%F6faq">成绩分析faq</a>&nbsp;<a href="http://hi.baidu.com/myslan/blog/item/84e663c6cbe7cf1c9d163d7c.html#comment">查看评论</a>]]></description>
        <pubDate>2008-10-30  09:11</pubDate>
        <category><![CDATA[成绩分析faq]]></category>
        <author><![CDATA[myslan]]></author>
		<guid>http://hi.baidu.com/myslan/blog/item/84e663c6cbe7cf1c9d163d7c.html</guid>
</item>

<item>
        <title><![CDATA[匈牙利命名法]]></title>
        <link><![CDATA[http://hi.baidu.com/myslan/blog/item/99b8de13dd53e425dd540173.html]]></link>
        <description><![CDATA[
		
		<p><font face="Times New Roman"><font size="3"><span>匈牙利命名法是微软推广的一种关于变量、函数、对象、前缀、宏定义等各种类型的符号的命名规范。匈牙利命名法的主要思想是：在变量和函数名中加入前缀以增进人们对程序的理解。它是由微软内部的一个匈牙利人发起使用的，结果它在微软内部逐渐流行起来，并且推广给了全世界的</span><span>Windows</span><span>开发人员。下面将介绍匈牙利命名法，后面的例子里也会尽量遵守它和上面的代码风格。还是那句话，并不是要求所有的读者都要去遵守，但是希望读者作为一个现代的软件开发人员都去遵守它。</span></font></font></p>
<p><font face="Times New Roman" size="3"><span><font face="Fixedsys">a&nbsp;&nbsp;&nbsp;&nbsp;  Array&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 数组<br>
b&nbsp;&nbsp;&nbsp;&nbsp;  BOOL (int)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 布尔(整数)<br>
by&nbsp;&nbsp;&nbsp;  Unsigned Char (Byte)&nbsp;&nbsp;&nbsp;&nbsp; 无符号字符(字节)<br>
c&nbsp;&nbsp;&nbsp;&nbsp;  Char&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字符(字节)<br>
cb&nbsp;&nbsp;&nbsp;  Count of bytes&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字节数<br>
cr&nbsp;&nbsp;&nbsp;  Color reference value&nbsp;&nbsp;&nbsp; 颜色(参考)值<br>
cx&nbsp;&nbsp;&nbsp;  Count of x (Short)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; x的集合(短整数)<br>
dw&nbsp;&nbsp;&nbsp;  DWORD&nbsp;&nbsp;  (unsigned long) 双字(无符号长整数)<br>
f&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Flags&nbsp;&nbsp;  (usually multiple bit values)&nbsp;&nbsp;  标志(一般是有多位的数值)<br>
fn&nbsp;&nbsp;&nbsp;  Function&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 函数<br>
g_&nbsp;&nbsp;&nbsp;  global&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 全局的<br>
h&nbsp;&nbsp;&nbsp;&nbsp;  Handle&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 句柄<br>
i&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 整数<br>
l&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Long&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 长整数<br>
lp&nbsp;&nbsp;&nbsp;  Long pointer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 长指针<br>
m_&nbsp;&nbsp;&nbsp;  Data member of a class&nbsp;&nbsp; 一个类的数据成员<br>
n&nbsp;&nbsp;&nbsp;&nbsp;  Short int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 短整数<br>
p&nbsp;&nbsp;&nbsp;&nbsp;  Pointer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 指针<br>
s&nbsp;&nbsp;&nbsp;&nbsp;  String&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字符串<br>
sz&nbsp;&nbsp;&nbsp;  Zero terminated String&nbsp;&nbsp; 以0结尾的字符串<br>
tm&nbsp;&nbsp;&nbsp;  Text metric&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 文本规则<br>
u&nbsp;&nbsp;&nbsp;&nbsp;  Unsigned int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 无符号整数<br>
ul&nbsp;&nbsp;&nbsp;  Unsigned long (ULONG)&nbsp;&nbsp;  无符号长整数<br>
w&nbsp;&nbsp;&nbsp;&nbsp;  WORD (unsigned short)&nbsp;&nbsp;  无符号短整数<br>
x,y&nbsp;&nbsp;  x,y coordinates (short) 坐标值/短整数<br>
v&nbsp;&nbsp;&nbsp;&nbsp;  void&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 空</font></span></font></p>
<font face="Times New Roman" size="3"><span><font face="Fixedsys">
<p><br>
有关项目的全局变量用g_开始，类成员变量用m_，局部变量若函数较大则可考虑用l_用以显示说明其是局部变量。</p>
<p>前缀&nbsp;&nbsp;&nbsp;&nbsp; 类型&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  例子<br>
g_&nbsp;&nbsp;&nbsp;&nbsp;  全局变量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  g_Servers<br>
C&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  类或者结构体&nbsp;&nbsp;&nbsp; CDocument，CPrintInfo<br>
m_&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 成员变量&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; m_pDoc，m_nCustomers</p>
<p><font face="Times New Roman"><span>VC常用前缀列表：</span></font></p>
<p class="MsoNormal" style="border-right: medium none; padding-right: 0cm; border-top: medium none; padding-left: 0cm; padding-bottom: 0cm; margin: 0cm 0cm 0pt; border-left: medium none; padding-top: 0cm; border-bottom: medium none; mso-border-bottom-alt: solid windowtext .75pt; mso-padding-alt: 1.0pt 0cm 1.0pt 0cm; mso-border-top-alt: solid windowtext .75pt">
<table style="width: 100%; height: 378px" cellspacing="1" cellpadding="1" border="1">
    <tbody>
        <tr>
            <td><span><font face="Times New Roman" size="3">前缀</font></span></td>
            <td><font face="Times New Roman" size="3">类型</font></td>
            <td><font face="Times New Roman" size="3">描述</font></td>
            <td><font face="Times New Roman" size="3">例子</font></td>
        </tr>
        <tr>
            <td><font face="Times New Roman" size="3">ch</font></td>
            <td><font face="Times New Roman" size="3">char</font></td>
            <td><font face="Times New Roman" size="3">8位字符</font></td>
            <td><font face="Times New Roman" size="3">chGrade</font></td>
        </tr>
        <tr>
            <td><font face="Times New Roman" size="3">ch</font></td>
            <td><font face="Times New Roman" size="3">TCHAR</font></td>
            <td><font face="Times New Roman" size="3">16位Unicode集字符</font></td>
            <td><font face="Times New Roman" size="3">chName</font></td>
        </tr>
        <tr>
            <td><font face="Times New Roman" size="3">b</font></td>
            <td><font face="Times New Roman" size="3">BOOL</font></td>
            <td><font face="Times New Roman" size="3">布尔变量</font></td>
            <td><font face="Times New Roman" size="3">bEnable</font></td>
        </tr>
        <tr>
            <td><font face="Times New Roman" size="3">n</font></td>
            <td><font face="Times New Roman" size="3">int</font></td>
            <td><font face="Times New Roman" size="3">整型</font></td>
            <td><font face="Times New Roman" size="3">nLength</font></td>
        </tr>
        <tr>
            <td><font face="Times New Roman" size="3">n</font></td>
            <td><font face="Times New Roman" size="3">UINT</font></td>
            <td><font face="Times New Roman" size="3">无符整型</font></td>
            <td><font face="Times New Roman" size="3">nLength</font></td>
        </tr>
        <tr>
            <td><font face="Times New Roman" size="3">w</font></td>
            <td><font face="Times New Roman" size="3">WORD</font></td>
            <td><font face="Times New Roman" size="3">16位无符号整型</font></td>
            <td><font face="Times New Roman" size="3">wPos</font></td>
        </tr>
        <tr>
            <td><font face="Times New Roman" size="3">l</font></td>
            <td><font face="Times New Roman" size="3">Long</font></td>
            <td><font face="Times New Roman" size="3">32位有符号整型</font></td>
            <td><font face="Times New Roman" size="3">lOffset</font></td>
        </tr>
        <tr>
            <td><font face="Times New Roman" size="3">dw</font></td>
            <td><font face="Times New Roman" size="3">DWORD</font></td>
            <td><font face="Times New Roman" size="3">32位无符号整型</font></td>
            <td><font face="Times New Roman" size="3">dwRange</font></td>
        </tr>
        <tr>
            <td><font face="Times New Roman" size="3">p</font></td>
            <td><font face="Times New Roman" size="3">*</font></td>
            <td><font face="Times New Roman" size="3">指针变量，内存模块指针（Ambient memory model point)</font></td>
            <td><font face="Times New Roman" size="3">pDoc</font></td>
        </tr>
        <tr>
            <td><font face="Times New Roman" size="3">lp</font></td>
            <td><font face="Times New Roman" size="3">Far*</font></td>
            <td><font face="Times New Roman" size="3">长指针</font></td>
            <td><font face="Times New Roman" size="3">lpDoc</font></td>
        </tr>
        <tr>
            <td><font face="Times New Roman" size="3">lpsz</font></td>
            <td><font face="Times New Roman" size="3">LPSTR</font></td>
            <td><font face="Times New Roman" size="3">32位字符串指针</font></td>
            <td><font face="Times New Roman" size="3">lpszName</font></td>
        </tr>
        <tr>
            <td><font face="Times New Roman" size="3">lpsz</font></td>
            <td><font face="Times New Roman" size="3">LPCSTR</font></td>
            <td><font face="Times New Roman" size="3">32位常量字符串指针</font></td>
            <td><font face="Times New Roman" size="3">lpszName</font></td>
        </tr>
        <tr>
            <td><font face="Times New Roman" size="3">lpsz</font></td>
            <td><font face="Times New Roman" size="3">LPCTSTR</font></td>
            <td><font face="Times New Roman" size="3">32位Unicode集常量指针</font></td>
            <td><font face="Times New Roman" size="3">lpszName</font></td>
        </tr>
        <tr>
            <td><font face="Times New Roman" size="3">h</font></td>
            <td><font face="Times New Roman" size="3">handle</font></td>
            <td><font face="Times New Roman" size="3">Windows对象句柄</font></td>
            <td><font face="Times New Roman" size="3">hWnd</font></td>
        </tr>
        <tr>
            <td><span><font face="Times New Roman" size="3">lpfn</font></span></td>
            <td><font face="Times New Roman"><font size="3">(*fn)()<span><span style="mso-tab-count: 1">&nbsp;&nbsp;  </span></span></font></font></td>
            <td><font face="Times New Roman"><font size="3"><span>回调函数指针</span><span> Callback Far pointer to CALLBACK function<span style="mso-tab-count: 1"> </span></span></font></font></td>
            <td><font face="Times New Roman" size="3">lpfnAbort</font></td>
        </tr>
    </tbody>
</table>
</p>
</font></span></font> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/myslan/blog/category/%BF%AA%B7%A2%D7%CA%C1%CF">开发资料</a>&nbsp;<a href="http://hi.baidu.com/myslan/blog/item/99b8de13dd53e425dd540173.html#comment">查看评论</a>]]></description>
        <pubDate>2008-10-20  22:15</pubDate>
        <category><![CDATA[开发资料]]></category>
        <author><![CDATA[myslan]]></author>
		<guid>http://hi.baidu.com/myslan/blog/item/99b8de13dd53e425dd540173.html</guid>
</item>

<item>
        <title><![CDATA[GB18030 编码]]></title>
        <link><![CDATA[http://hi.baidu.com/myslan/blog/item/b8a63bdddb979ddf8d10290f.html]]></link>
        <description><![CDATA[
		
		<p><font face="Times New Roman" size="3">从计算机的应用开始，我国已经颁布了多种中文信息编码标准，常用的是 GB2312-1980，GB12345，GB13000 (GBK)，以及最新标准 GB18030。最新的 GB18030 标准将要作为强制标准实行，所有不支持 GB18030 标准的软件将不能作为产品出售，当然，这里有个时间限制，类似 WAPI。Microsoft 已经发布了 Windows NT / XP 的相关 patch。 <br>
<br>
从 GB2312-1980 编码开始，汉字都是采用双字节编码。为了与系统中基本的 ASCII 字符集区分开，所有汉字编码的每个字节的第一位都是 1。例如：&ldquo;啊&rdquo;字的编码为 0xB0A1。</font></p>
<p><font face="Times New Roman" size="3">GB2312 的汉字编码规则为：</font></p>
<p><font face="Times New Roman" size="3">第一个字节的值在 0xB0 到 0xF7 之间，第二个字节的值在0xA0 到 0xFE 之间。</font></p>
<p><font face="Times New Roman" size="3">GB12345 和 GB13000 是对 GB2312-1980 的扩充，所有已经包含在 GB2312 中的汉字编码不变，另外增加更多的码位。</font></p>
<p><font face="Times New Roman" size="3">其编码规则大致为：第一个字节的值在 0x81 到 0xFE 之间，第二个字节的值在 0x40 到 0xFE 之间。由于 GB13000 是对GB2312 的扩展，所以也被称为 GBK。 <br>
</font></p>
<p><font face="Times New Roman" size="3">GB18030 也是对 GB2312 的扩展 (原有编码不变)，其编码长度由 2 个字节变为 1 - 4 个字节。其中包括：<br>
<br>
单字节，其值从 0 到 0x7F；<br>
双字节，第一个字节的值从 0x81 到 0xFE，第二个字节的值从 0x40 到 0xFE (不包括 0x7F)；<br>
四字节，第一个字节的值从 0x81 到 0xFE，第二个字节的值从 0x30 到 0x39，第三个字节的值从 0x81 到 0xFE，第四个字节的值从 0x30 到 0x39。<br>
<br>
</font></p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/myslan/blog/category/%BF%AA%B7%A2%D7%CA%C1%CF">开发资料</a>&nbsp;<a href="http://hi.baidu.com/myslan/blog/item/b8a63bdddb979ddf8d10290f.html#comment">查看评论</a>]]></description>
        <pubDate>2008-10-15  20:02</pubDate>
        <category><![CDATA[开发资料]]></category>
        <author><![CDATA[myslan]]></author>
		<guid>http://hi.baidu.com/myslan/blog/item/b8a63bdddb979ddf8d10290f.html</guid>
</item>

<item>
        <title><![CDATA[VC/C++的中文字符处理方式]]></title>
        <link><![CDATA[http://hi.baidu.com/myslan/blog/item/1afd0ed57b2a3cc251da4b30.html]]></link>
        <description><![CDATA[
		
		一 引入问题 <br>
代码 wchar_t a[3]=&rdquo;中国&rdquo;，编译时出错，出错信息为：数组越界。但wchar_t 是一个宽字节类型，数组a的大小应为6个字节，而两个汉字的的unicode码占4个字节，再加上一个结束符，最多6个字节，所以应该不会越界。难道是编译器出问题了？ <br>
二 解决引入问题所需的知识 <br>
主要需两方面的知识，第一个为字符尤其是汉字的编码，以及语言和工具的支持情况，第二个是vc/c++中MutiByte Charater Set 和 Wide Character Set有关内存分配的情况. <br>
三 汉字的编码方式及在vc/c++中的处理 <br>
1.汉字编码方式的介绍 <br>
对英文字符的处理，7位ASCII码字符集中的字符即可满足使用需求，且英文字符在计算机上的输入及输出也非常简单，因此，英文字符的输入、存储、内部处理和输出都可以只用同一个编码（如ASCII码）。 <br>
而汉字是一种象形文字，字数极多（现代汉字中仅常用字就有六、七千个，总字数高达5万个以上），且字形复杂，每一个汉字都有&quot;音、形、义&quot;三要素，同音字、异体字也很多，这些都给汉字的的计算机处理带来了很大的困难。要在计算机中处理汉字，必须解决以下几个问题：首先是汉字的输入，即如何把结构复杂的方块汉字输入到计算机中去，这是汉字处理的关键；其次，汉字在计算机内如何表示和存储？如何与西文兼容？最后，如何将汉字的处理结果从计算机内输出？ <br>
为此，必须将汉字代码化，即对汉字进行编码。对应于上述汉字处理过程中的输入、内部处理及输出这三个主要环节，每一个汉字的编码都包括输入码、交换码、内部码和字形码。在计算机的汉字信息处理系统中，处理汉字时要进行如下的代码转换：输入码→交换码→内部码→字形码。 <br>
(1)输入码： 作用是，利用它和现有的标准西文键盘结合来输入汉字。输入码也称为外码。主要归为四类： <br>
a) 数字编码：数字编码是用等长的数字串为汉字逐一编号，以这个编号作为汉字的输入码。例如，区位码、电报码等都属于数字编码。 <br>
b) 拼音码：拼音码是以汉字的读音为基础的输入办法。 <br>
c) 字形码：字形码是以汉字的字形结构为基础的输入编码。例如，五笔字型码（王码）。 <br>
d) 音形码：音形码是兼顾汉字的读音和字形的输入编码。 <br>
(2)交换码：用于汉字外码和内部码的交换。交换码的国家标准代号为GB2312-80。 <br>
(3)内部码：内部码是汉字在计算机内的基本表示形式，是计算机对汉字进行识别、存储、处理和传输所用的编码。内部码也是双字节编码，将国标码两个字节的最高位都置为&quot;1&quot;，即转换成汉字的内部码。 <br>
(4)字形码：字形码是表示汉字字形信息（汉字的结构、形状、笔划等）的编码，用来实现计算机对汉字的输出（显示、打印）。 <br>
2.VC中汉字的编码方式 <br>
vc/c++正是采用了GB2312内部码作为汉字的编码方式,因此vc/c++中的各种输入输出方法，如cin/wcin,cout/wcout,scanf/wsanf,printf/wprintf...都是基于GB2312的，如果汉字的内码不是这种编码方式，那么利用上述各种方法就不会正确的解析汉字。 <br>
仔细观察ASCII字符表，从第161个字符开始，后面的字符并不经常为用户所使用，负值也未使用。GB2312编码方式充分利用这一特性，将161-255（-95~-1）之间的数值空间作为汉字的标识码。既然255-161 = 94不能满足汉字容量的要求，就将每两个字符并在一块(即一个汉字占两个字节)，显然，94* 94 =8836基本上已经满足了常用汉字个数的要求。计算机处理字符时，当连续处理到两个大与160(或-95~-1)的字节时，就认为这两个字节存放了一个汉字字符。可以用下面的Demo程序来模拟vc/c++中输出汉字字符的过程。 <br>
unsigned char input[50]; <br>
cin&gt;&gt;input; <br>
int flag=0; <br>
for(int i =0 ;i &lt; 50 ;i++) <br>
{ <br>
if(input[i] &gt; 0xa0 &amp;&amp; input[i] != 0) <br>
{ <br>
if(flag == 1) <br>
{ <br>
cout &lt; &lt;&quot;chinese character&quot; &lt; &lt;endl; <br>
flag = 0; <br>
} <br>
else <br>
{ <br>
flag++; <br>
} <br>
} <br>
else if(input[i] == 0) <br>
{ <br>
break; <br>
} <br>
else <br>
{ <br>
cout &lt; &lt;&quot;english character&quot; &lt; &lt;endl; <br>
} <br>
} <br>
输入：Hello中国 （&ldquo;中国&rdquo;对应的GB2312内码为：214 208，185 250） <br>
输出：english character <br>
english character <br>
english character <br>
english character <br>
english character <br>
chinese character <br>
chinese character <br>
vc/c++中的英文字符仍然采用ASCII编码方式。可以设想，其他国家程序员利用vc/c++编写程序输入本国字符时，vc/c++则会采用该国的字符编码方式来处理这些字符。 <br>
问题又产生了，韩国的vc/c++程序在中国的vc/c++上运行时，如果没有相应的内码库，则对韩语字符的显示有可能出现乱码。我个人猜测，vc安装程序中应该带有不同国家的内码库，这样一来肯定会占用很大的空间。如果所有的国家使用统一的编码方式，且所有的程序设计语言和开发工具都支持这种编码方式该多好！而现实中，确实已经有这种编码方式了，且许多新的语言也都支持这种编码方式，如Java、C#等，它就是下面的Unicode编码 <br>
3.新的内码标准---Unicode <br>
Unicode（统一码、万国码、单一码）是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码，以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发，1994年正式公布。随着计算机工作能力的增强，Unicode也在面世以来的十多年里得到普及。最新版本的 Unicode 是 2005年3月31日推出的Unicode 4.1.0 。另外，5.0 Beta已于2005年12月12日推出，以供各会员评价。 <br>
Unicode 编码系统可分为编码方式和实现方式两个层次。 <br>
编码方式：Unicode 的编码方式与 ISO 10646 的通用字符集（Universal Character Set，UCS）概念相对应，目前的用于实用的 Unicode 版本对应于 UCS-2，使用16位的编码空间。也就是每个字符占用2个字节。这样理论上一共最多可以表示 216 个字符。基本满足各种语言的使用。实际上目前版本的 Unicode 尚未填充满这16位编码，保留了大量空间作为特殊使用或将来扩展。 <br>
实现方式：Unicode 的实现方式不同于编码方式。一个字符的 Unicode 编码是确定的。但是在实际传输过程中，由于不同系统平台的设计不一定一致，以及出于节省空间的目的，对 Unicode 编码的实现方式有所不同。Unicode 的实现方式称为Unicode转换格式（Unicode Translation Format，简称为 UTF）。如，UTF-8 编码，这是一种变长编码，它将基本7位ASCII字符仍用7位编码表示，占用一个字节（首位补0）。而遇到与其他 Unicode 字符混合的情况，将按一定算法转换，每个字符使用1-3个字节编码，并利用首位为0或1进行识别。 <br>
Java与C#语言都是采用Unicode编码方式，在这两种语言中定义一个字符，在内存中存放的就是这个字符的两字节Unicode码。如下所示： <br>
char a='我'; =&gt; 内存中存放的Unicode码为：25105 <br>
4.内码的相互转换 <br>
(1)vc中的实现方法 <br>
利用Windows系统提供的API：::MultiByteToWideChar和::WideCharToMultiByte <br>
::MultiByteToWideChar：实现当前码到Unicode码的转换； <br>
::WideCharToMultiByte：实现Unicode码到当前码的转换； <br>
(2)Java中的实现方法 <br>
String vcString=new String(javaString.getBytes(&quot;UTF-8&quot;),&quot;gb2312&quot;); <br>
java的编码应该是UTF-8 <br>
(3)C#中的实现方法 <br>
<br>
<br>
四 vc中的MutiByte Charater Set 和 Wide Character Set <br>
1.MultiByte Charater Set方式 <br>
这种方式以按字节为单位存放字符，即如果一个字符码为两字节，则在内存中占两字节，字符码为一字节，就占一字节。例如，字符串&ldquo;中国abc&rdquo;的编码为：中(0xd6、0xd0)、国(0xb9、0xfa)、a(0x61)、b(0x62)、c(0x63)、\0(0x00)，就存为如下方式： <br>
<br>
对应的类型，方法有： <br>
char、scanf、printf、cin、cout … <br>
2.Wide Character Set <br>
这种方式是以两字节为单位存放字符，即如果一个字符码为两字节，则在内存中占四字节，字符码为一字节，就占两字节。例如，字符串&ldquo;中国abc&rdquo;就存为如下方式： <br>
<br>
对应的类型，方法有： <br>
wchar_t、wscanf、wprintf、wcin、wcout … <br>
造成上面存储方式的根本原因在于，wchar_t类型其实是一个unsigned short 类型。如，存储上面字符串的数组的定义为：wchar_t buffer[8] 等价于unsigned short buffer[8].而所有以字母w开头的方法也都是以unsigned short类型,即两字节为单位来处理字符，因此，存储在wchar_t类型数组中的字符串无法用cout显示，只能用wcout方法来显示。 <br>
由于Unicode码也是采用两个字节，因此Wide Character Set方式能够很好的支持Unicode码的存储，但是在vc的环境下要将一个Unicode码存入两字节而不是四字节内存中，必须通过上面的API函数::MultiByteToWideChar。首先，将当前的编码转换为Unicode码，然后，将每个字符的Unicode码放入每一个wchar_t类型的变量中。以下是一个实例代码： <br>
char input[50]; <br>
cin&gt;&gt;input; <br>
int size; <br>
size=::MultiByteToWideChar(CP_ACP,0,input,strlen(input)+1,NULL,0); <br>
if(size==0) <br>
return -1; <br>
wchar_t *widebuff=new wchar_t[size]; <br>
::MultiByteToWideChar(CP_ACP,0,input,strlen(input)+1,widebuff,size); <br>
输入：中国abc <br>
Debug断点调试： <br>
size==6 <br>
数组widebuff[0-size]占12字节，存放了6个字符的Unicode码，码值为： <br>
中(0x4e2d) 国(0x56fd) a(0x0061) b(0x0062) c(0x0063) d(0x0000) <br>
这时，数组的大小size等于输入的字符个数加上一个结束符，符合我们的想象。 <br>
五 引入问题的错误分析 <br>
(1) 没有理解编译器中的编码方式 <br>
虽然vc/c++中汉字的编码占两个字节，但并不是Unicode码，是GB2312码。 <br>
(2) 没有理解MutiByte Charater Set 和 Wide Character Set的存储原则； <br>
在vc/c++中，&ldquo;中国&rdquo;按char[5]来对待，而wchar_t a[3]实际上是三个unsigned short类型的变量，因此赋值时会越界 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/myslan/blog/category/%BF%AA%B7%A2%D7%CA%C1%CF">开发资料</a>&nbsp;<a href="http://hi.baidu.com/myslan/blog/item/1afd0ed57b2a3cc251da4b30.html#comment">查看评论</a>]]></description>
        <pubDate>2008-10-15  19:23</pubDate>
        <category><![CDATA[开发资料]]></category>
        <author><![CDATA[myslan]]></author>
		<guid>http://hi.baidu.com/myslan/blog/item/1afd0ed57b2a3cc251da4b30.html</guid>
</item>

<item>
        <title><![CDATA[如何查询百度Hi的状态]]></title>
        <link><![CDATA[http://hi.baidu.com/myslan/blog/item/5b4335a424f4b3f19052ee83.html]]></link>
        <description><![CDATA[
		
		<p> </p>
<p>例如，我的百度Hi对应的字符串使这个，访问页面</p>
<p><a href="http://pdc.baidu.com/imstate/?callback=json[&quot;7e816d79736c616e4500&quot;]&amp;type=json&amp;uids=7e816d79736c616e4500">http://pdc.baidu.com/imstate/?callback=json[&quot;7e816d79736c616e4500&quot;]&amp;type=json&amp;uids=7e816d79736c616e4500</a></p>
<p>就可以获取在线状态</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/myslan/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/myslan/blog/item/5b4335a424f4b3f19052ee83.html#comment">查看评论</a>]]></description>
        <pubDate>2008-09-28  11:36</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[myslan]]></author>
		<guid>http://hi.baidu.com/myslan/blog/item/5b4335a424f4b3f19052ee83.html</guid>
</item>


</channel>
</rss>