??xml version="1.0" encoding="utf-8" standalone="yes"?>最新在线观看av,国产精品网站在线播放,欧美1区视频http://www.aygfsteel.com/Yipak/成功在于你是否努?希望在于你是否相信自? zh-cnSat, 17 May 2025 12:59:27 GMTSat, 17 May 2025 12:59:27 GMT60配置vim 7.1来用vimcdoc的中文帮?/title><link>http://www.aygfsteel.com/Yipak/articles/323514.html</link><dc:creator>ȝ</dc:creator><author>ȝ</author><pubDate>Sun, 13 Jun 2010 06:47:00 GMT</pubDate><guid>http://www.aygfsteel.com/Yipak/articles/323514.html</guid><wfw:comment>http://www.aygfsteel.com/Yipak/comments/323514.html</wfw:comment><comments>http://www.aygfsteel.com/Yipak/articles/323514.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Yipak/comments/commentRss/323514.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Yipak/services/trackbacks/323514.html</trackback:ping><description><![CDATA[<p> <h4></h4> <h5></h5> <h3></h3> <h4>1.q</h4> <h4>׃vimcdoc的文仉是UTF-8格式?所以直接用gvim打开后会(x)出现q.解决:?vimrc文g中加上一?set encoding=utf-8" </h4> <h4>2.如果操作pȝ?000/xp中文?gvim的初始界面以?qing)菜单栏都是中?如果按照1中的Ҏ(gu)讄uft-8的话,q些内容变成ؕ码了.解决:把vim文g夹下面的lang文g夹删?q样gvim启动的时候就默认是英语了,菜单栏和界面提示也都是英文了. </h4> <h4>3.用gvim打开vimfiles文g夹下面的中文帮助help.cnx文g后点击链接不能蟩?</h4> <h4>q是׃tags文g有问?解决:用vimfiles/doc文g夹覆盖vim71/doc,<font color="#ff0000">具体步骤Q?Q删除或U走vim71下的doc目录Q?Q将vimfiles下的doc目录拯qvim71下,3Q用扚w重命名工具将doc下的所有cnx后缀的文件改成txt后缀</font>.Q当?如果你想保存一栯文帮助的话可以先打包.Q这L(fng)好处是可以蟩转了,而且直接启动gvim后按F1可以启动中文帮助了^^ </h4> <h4>本文来自CSDN博客Q{载请标明出处Qhttp://blog.csdn.net/happen23/archive/2008/04/24/2324916.aspx</h4> <img src ="http://www.aygfsteel.com/Yipak/aggbug/323514.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Yipak/" target="_blank">ȝ</a> 2010-06-13 14:47 <a href="http://www.aygfsteel.com/Yipak/articles/323514.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Python是垃圾?http://www.aygfsteel.com/Yipak/articles/230183.htmlȝȝSat, 20 Sep 2008 13:55:00 GMThttp://www.aygfsteel.com/Yipak/articles/230183.htmlhttp://www.aygfsteel.com/Yipak/comments/230183.htmlhttp://www.aygfsteel.com/Yipak/articles/230183.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/230183.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/230183.htmlpython和basic差不多应该是Ҏ(gu)学,但是功能q语言

basic是好多h的年q时的回忆了QgvbasicQgwbasicQqbaiscQ各U版本把很多人带入了快乐的世界里面。但是很多h都会(x)用了一D|间basic之后把它废|了Q因得除了能够用来playQ功能太。即便是vbQ也是功能不甚完善的Q很多地方要依靠其他语言写的lg和直接调?api来完成功能?br />而python׃_看之下Q也是那么的像玩兗而且那个交互式命令行lh带来的教学语a的感觉更加加ZZ的想法?br />但是python其实功能不能说是弱,其实是非常强大。python内置了重要的数据l构和文件这些功能,而且包含了一个很大的标准库,基本上涵盖了?GUI到数据库到网l种U功能上的要求。而且q有很多爱好者,公司企业为python写第三方的库Q这些库品种J多Q功能齐全。而且q能把其他语a的库加以包装l自׃用,直接用cq样的语a了来写扩展的库也是可以的。所以说Qpython像basic一样好学,但是功能却要强大很多?br />
W二个常见看法是Q?br />
python速度很慢Q只能用在很的应用场合

对于?fn)惯了汇~和C++q样的语a的hQ思维L有一个惯性(包括我自׃l历了这么一个阶D)。就是看文g大小是数字节的,Mq行时的 overhead都是l对不可以的。那么一看见pythonq样的动态语aQ而且动态得非常厉害的语aQ怎么看怎么不顺g是情理之中了?br />关键的问题首先是你是否需要省那么?00~200k的大,现在的内存,盘Q网l通信环境已经不大在乎q么一点的I间了,所以大不是问题。关键的是运行时间吗Q其实在很多场合下是不需要那么快的速度的,比如开一个窗口,q行如果延时100msQ你感觉得到吗?
pythonq能够把py文gq行一些处理变成pyc文gQ加速源文g的解释执行。像java的虚拟机中的just in time或者hot spotq样的预先读取,预先~译的技术都能构同等的用于python?br />pythonq有一个非常大的好处就是能够用Cq样的快速的语言写扩展模块。在软g中一般都?0%的代码占据了80%的运行时间。这样你可以先用 benchmarkq样的工L(fng)看Y件是否慢得无法忍受了Q然后再用profiler查出问题瓉在哪里,那么可以把关键的代码用C解决掉。这样可以节省了开发时_(d)大部分代码用python写,比C快)Q而且q行速度也可以o(h)人满意?br />所以说Q对于python的速度是不用多担心的。但是ؓ(f)了客观v见,python的却是慢的,在python中什么都是对象,q个比javaq样的不那么U的OO语言Q就要差一些了?br />
W三个常见问题是Q?br />
׃python是动态的Q程序更加容易出错了

有这个看法主要是认ؓ(f)Q因为python是动态的Q所以缺乏静态的cd查,那么E序中的错误很隑֏C。设|可能说没有执行到的块的语法都没有得到完全彻底的查。变量由于没有声明,所以容易生误写的错误。事情真q么p糕吗?

W一个缺乏类型检查是说一个函数有几个参数Q但是由于参数的cd是动态确定的Q所以没有办法在静态的时候就查传入的参数和参数表是否匚w了。问题是你写的函C定要自己试了,而且一旦出了问题,你是非常Ҏ(gu)扑ֈ出错的地方的。dynamic typing是那么灵zd用,多这么一炚w烦也是值得的?br />
W二个看法就是错误的。在python中所有语法都得到了检查的。即使是处在分支语句中。只是有可能你说的是q样的情况:(x)
a = 1;
明明加了分号Q怎么不说我错了呢Q其实分h可以用的Q用来格开在一行中的不同语句?br />q有可能是这L(fng)Q?br />if a == 0:
  fsdfsdafsad
q个怪东西应该是一个语法错误吧。其实是未必。因为程序运行到q个的时候可能这个名字就l定C什么东西上了,未必是错误。它是符合语句的语法的?br />
W三个则不是那么回事了。在basic中,你引用一个没有出现过的变量名。那么这个变量自动被分配Q而且得到初始化。这个就?x)出问题了。而python中,你不能引用一个没有绑定到对象上的名字Q?br />name = 0
q样的语句就是一个声明了。没有什么问题?br />name = 0
nama = 1
q个L问题了吧。对于变量名的误拼写出现在赋值的情况的时候就?x)被通过Q因为是产生一个新的名U绑定。那么这个也好找出来啊,必然是出现在赋值的情况下,比basic中的那种情况好多?br />
M来说是,dynamic的东西缺一些静态的查的却是?x)得错误隐蔽一些。但是由于动态带来的调试上的方便Q比如能够一g出错信息中找到出错的行,以及(qing)调用程Q以把副作用给抉|了?br />
希望通过我的一点解释,能够让你消去疑惑Q喜Ƣ上python?

ȝ 2008-09-20 21:55 发表评论
]]>
Ansi、Unicode、UTF8字符串之间的转换和写入文本文?/title><link>http://www.aygfsteel.com/Yipak/articles/229223.html</link><dc:creator>ȝ</dc:creator><author>ȝ</author><pubDate>Tue, 16 Sep 2008 09:59:00 GMT</pubDate><guid>http://www.aygfsteel.com/Yipak/articles/229223.html</guid><wfw:comment>http://www.aygfsteel.com/Yipak/comments/229223.html</wfw:comment><comments>http://www.aygfsteel.com/Yipak/articles/229223.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Yipak/comments/commentRss/229223.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Yipak/services/trackbacks/229223.html</trackback:ping><description><![CDATA[ <p>转蝲h明出?a >http://www.cppblog.com/greatws/archive/2008/08/31/60546.html</a><br /><br />最q有人问我关于这个的问题Q就此写一blog<br /><br />Ansi字符串我们最熟?zhn)Q英文占一个字节,汉字2个字节,以一个\0l尾Q常用于txt文本文g<br />Unicode字符Ԍ每个字符(汉字、英文字?都占2个字节,?个连l的\0l尾QNT操作pȝ内核用的是这U字W串Q常被定义ؓ(f)typedef unsigned short wchar_t;所以我们有时常?x)见C么char*无法转换为unsigned short*之类的错误,其实是unicode<br />UTF8是Unicode一U压~Ş式,英文A在unicode中表CZؓ(f)0x0041Q老外觉得q种存储方式太浪费,因ؓ(f)费?0%的空_(d)于是把英文压羃?个字节,成了utf8~码Q但是汉字在utf8中占3个字节,昄用做中文不如ansi合算Q这是中国的网는作ansi~码而老外的网常用utf8的原因?br />UTF8在还游戏里运用的很广泛,比如WOW的lua脚本{?br /><br />下面来说一下{换,主要用代码来说明?br />写文件我用了CFilec,其实用FILE*之类的也是一P写文件和字符串什么类别没有关p,g只关心数据和长度<br /><br />Ansi转Unicode<br />介绍2U方?br /><br /></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonAnsiToUnicode()<br /><img id="Codehighlighter1_51_1122_Open_Image" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_51_1122_Closed_Image" style="DISPLAY: none" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span> <span id="Codehighlighter1_51_1122_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://www.cppblog.com/Images/dot.gif" /> </span> <span id="Codehighlighter1_51_1122_Open_Text"> <span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000"> ansi to unicode</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> szAnsi </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">abcd1234你我?/span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">预{换,得到所需I间的大?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000"> wcsLen </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), NULL, </span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">分配I间要给'\0'留个I间QMultiByteToWideChar不会(x)l?\0'I间</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    wchar_t</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> wszString </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000"> wchar_t[wcsLen </span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">转换</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), wszString, wcsLen);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">最后加?\0'</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    wszString[wcsLen] </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">\0</span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">unicode版的MessageBox API</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    ::MessageBoxW(GetSafeHwnd(), wszString, wszString, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">接下来写入文?br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写文本文Ӟ?个字?xfeffQ低?xff写在?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    CFile cFile;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Open(_T(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">1.txt</span> <span style="COLOR: #000000">")</span> <span style="COLOR: #000000">, CFile::modeWrite </span> <span style="COLOR: #000000">|</span> <span style="COLOR: #000000"> CFile::modeCreate);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">文g开?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    cFile.SeekToBegin();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Write(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">\xff\xfe</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">, </span> <span style="COLOR: #000000">2</span> <span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写入内容</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    cFile.Write(wszString, wcsLen </span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">sizeof</span> <span style="COLOR: #000000">(wchar_t));<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Flush();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Close();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    delete[] wszString;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    wszString </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">NULL;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">Ҏ(gu)2<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">讄当前地域信息Q不讄的话Q用这U方法,中文不会(x)正确昄<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">需?include<locale.h></span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    setlocale(LC_CTYPE, </span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">chs</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">); <br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    wchar_t wcsStr[</span> <span style="COLOR: #000000">100</span> <span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">注意下面是大写SQ在unicode中,代表后面是ansi字符?br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">swprintf是sprintf的unicode版本<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">格式的前面要加大写LQ代表是unicode</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    swprintf(wcsStr, L</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">%S</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">, szAnsi);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    ::MessageBoxW(GetSafeHwnd(), wcsStr, wcsStr, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span> </span> </div> <p> <br /> <br />Unicode转Ansi<br />也是2U方?br /><br /></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonUnicodeToAnsi()<br /><img id="Codehighlighter1_51_1013_Open_Image" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_51_1013_Closed_Image" style="DISPLAY: none" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span> <span id="Codehighlighter1_51_1013_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://www.cppblog.com/Images/dot.gif" /> </span> <span id="Codehighlighter1_51_1013_Open_Text"> <span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000"> unicode to ansi</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    wchar_t</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> wszString </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> L</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">abcd1234你我?/span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">预{换,得到所需I间的大,q次用的函数和上面名字相?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000"> ansiLen </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), NULL, </span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">同上Q分配空间要l?\0'留个I间</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> szAnsi </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">[ansiLen </span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">转换<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">unicode版对应的strlen是wcslen</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">最后加?\0'</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    szAnsi[ansiLen] </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">\0</span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">Ansi版的MessageBox API</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    ::MessageBoxA(GetSafeHwnd(), szAnsi, szAnsi, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">接下来写入文?br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写文本文ӞANSI文g没有BOM</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    CFile cFile;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Open(_T(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">1.txt</span> <span style="COLOR: #000000">")</span> <span style="COLOR: #000000">, CFile::modeWrite </span> <span style="COLOR: #000000">|</span> <span style="COLOR: #000000"> CFile::modeCreate);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">文g开?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    cFile.SeekToBegin();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写入内容</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    cFile.Write(szAnsi, ansiLen </span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">sizeof</span> <span style="COLOR: #000000">(</span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">));<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Flush();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Close();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    delete[] szAnsi;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    szAnsi </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">NULL;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">Ҏ(gu)2<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">和上面一h另一U方?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    setlocale(LC_CTYPE, </span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">chs</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">); <br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000"> szStr[</span> <span style="COLOR: #000000">100</span> <span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">注意下面是大写,在ansi中,代表后面是unicode字符?br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">sprintf</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    sprintf(szStr, </span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">%S</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">, wszString);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    ::MessageBoxA(GetSafeHwnd(), szStr, szStr, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span> </span> </div> <p> <br /> <br />Unicode转UTF8<br /><br /></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonUnicodeToU8()<br /><img id="Codehighlighter1_49_850_Open_Image" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_49_850_Closed_Image" style="DISPLAY: none" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span> <span id="Codehighlighter1_49_850_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://www.cppblog.com/Images/dot.gif" /> </span> <span id="Codehighlighter1_49_850_Open_Text"> <span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000"> unicode to UTF8</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    wchar_t</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> wszString </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> L</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">abcd1234你我?/span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">预{换,得到所需I间的大,q次用的函数和上面名字相?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000"> u8Len </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), NULL, </span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">同上Q分配空间要l?\0'留个I间<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">UTF8虽然是Unicode的压~Ş式,但也是多字节字符Ԍ所以可以以char的Ş式保?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> szU8 </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">[u8Len </span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">转换<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">unicode版对应的strlen是wcslen</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), szU8, u8Len, NULL, NULL);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">最后加?\0'</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    szU8[u8Len] </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">\0</span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">MessageBox不支持UTF8,所以只能写文g<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">接下来写入文?br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写文本文ӞUTF8的BOM?xbfbbef</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    CFile cFile;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Open(_T(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">1.txt</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">), CFile::modeWrite </span> <span style="COLOR: #000000">|</span> <span style="COLOR: #000000"> CFile::modeCreate);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">文g开?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    cFile.SeekToBegin();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写BOMQ同样低位写在前</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    cFile.Write(</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">\xef\xbb\xbf</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">, </span> <span style="COLOR: #000000">3</span> <span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写入内容</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    cFile.Write(szU8, u8Len </span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">sizeof</span> <span style="COLOR: #000000">(</span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">));<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Flush();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    cFile.Close();<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    delete[] szU8;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    szU8 </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000">NULL;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" />}</span> </span> </div> <p> <br />UTF8转UNICODE<br /><br /></p> <div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"> <img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /> <span style="COLOR: #0000ff">void</span> <span style="COLOR: #000000"> CConvertDlg::OnBnClickedButtonU8ToUnicode()<br /><img id="Codehighlighter1_49_613_Open_Image" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align="top" /><img id="Codehighlighter1_49_613_Closed_Image" style="DISPLAY: none" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align="top" /></span> <span id="Codehighlighter1_49_613_Closed_Text" style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"> <img src="http://www.cppblog.com/Images/dot.gif" /> </span> <span id="Codehighlighter1_49_613_Open_Text"> <span style="COLOR: #000000">{<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">UTF8 to Unicode<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">׃中文直接复制q来?x)成qQ编译器有时?x)报错,故采?6q制形式</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">char</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> szU8 </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">abcd1234\xe4\xbd\xa0\xe6\x88\x91\xe4\xbb\x96\x00</span> <span style="COLOR: #000000">"</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">预{换,得到所需I间的大?/span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    </span> <span style="COLOR: #0000ff">int</span> <span style="COLOR: #000000"> wcsLen </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, </span> <span style="COLOR: #000000">0</span> <span style="COLOR: #000000">);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">分配I间要给'\0'留个I间QMultiByteToWideChar不会(x)l?\0'I间</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    wchar_t</span> <span style="COLOR: #000000">*</span> <span style="COLOR: #000000"> wszString </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #0000ff">new</span> <span style="COLOR: #000000"> wchar_t[wcsLen </span> <span style="COLOR: #000000">+</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">1</span> <span style="COLOR: #000000">];<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">转换</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszString, wcsLen);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">最后加?\0'</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    wszString[wcsLen] </span> <span style="COLOR: #000000">=</span> <span style="COLOR: #000000"> </span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">\0</span> <span style="COLOR: #000000">'</span> <span style="COLOR: #000000">;<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">unicode版的MessageBox API</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /> </span> <span style="COLOR: #000000">    ::MessageBoxW(GetSafeHwnd(), wszString, wszString, MB_OK);<br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" /><br /><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align="top" />    </span> <span style="COLOR: #008000">//</span> <span style="COLOR: #008000">写文本同ansi to unicode</span> <span style="COLOR: #008000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align="top" /> </span> <span style="COLOR: #000000">}</span> </span> <span style="COLOR: #000000"> <br /> <img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align="top" /> </span> </div> <p> <br /> <br />Ansi转换utf8和utf8转换Ansi是上面2个的l合Q把unicode作ؓ(f)中间量,q行2ơ{换即?br /><br />by greatws </p> <img src ="http://www.aygfsteel.com/Yipak/aggbug/229223.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Yipak/" target="_blank">ȝ</a> 2008-09-16 17:59 <a href="http://www.aygfsteel.com/Yipak/articles/229223.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在C语言中怎样获得汉字~码?http://www.aygfsteel.com/Yipak/articles/229069.htmlȝȝMon, 15 Sep 2008 17:11:00 GMThttp://www.aygfsteel.com/Yipak/articles/229069.htmlhttp://www.aygfsteel.com/Yipak/comments/229069.htmlhttp://www.aygfsteel.com/Yipak/articles/229069.html#Feedback3http://www.aygfsteel.com/Yipak/comments/commentRss/229069.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/229069.html
但是Q要是用字符数组存的汉字Q怎样获得他的~码Q汉字用的是两个字节存储Q是不是q两个字节都有ASII码?那该怎么获得他们Q然后把他们l一成一个编码?


汉字~码分好几种Q不知道你想问的是哪U?

C/C++支持的是ASCIIQ不q汉字编码中QGB2312与ASCII是兼容的Q所以可以在C中获得汉字的GB2312~码

GB2312是两个字节的Q第一字节是高八位Q第二字节是低八位,比如下面的程序:(x)

#include<stdio.h>
#include<string.h>
int main()
{
char a[5];
strcpy(a,"?);
printf("%XH %XH\n",(unsigned char)a[0],(unsigned char)a[1]);
return 0;
}

a[0]是“啊”字的高八位Qa[1]是低八位Q程序运行结果是a[0]=B0 a[1]=A1Q用16q制表示的,所以“啊”字的GB2312~码是B0A1了~

输出时要强制转换成unsigned charQ不然就变成负数了,因ؓ(f)~码是以8位的无符hCؓ(f)单位?

当然也可以{?0q制啦,比如

int b;
b=(unsigned char)a[0]*256+(unsigned char)a[1];

b即ؓ(f)汉字?0q制GB2312~码?br />


ȝ 2008-09-16 01:11 发表评论
]]>
C#深入详解[4.1 数据cd]http://www.aygfsteel.com/Yipak/articles/227335.htmlȝȝFri, 05 Sep 2008 14:26:00 GMThttp://www.aygfsteel.com/Yipak/articles/227335.htmlhttp://www.aygfsteel.com/Yipak/comments/227335.htmlhttp://www.aygfsteel.com/Yipak/articles/227335.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/227335.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/227335.html阅读全文

ȝ 2008-09-05 22:26 发表评论
]]>
C++帔R的表C?/title><link>http://www.aygfsteel.com/Yipak/articles/227334.html</link><dc:creator>ȝ</dc:creator><author>ȝ</author><pubDate>Fri, 05 Sep 2008 14:24:00 GMT</pubDate><guid>http://www.aygfsteel.com/Yipak/articles/227334.html</guid><wfw:comment>http://www.aygfsteel.com/Yipak/comments/227334.html</wfw:comment><comments>http://www.aygfsteel.com/Yipak/articles/227334.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Yipak/comments/commentRss/227334.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Yipak/services/trackbacks/227334.html</trackback:ping><description><![CDATA[ <font face="宋体" size="4"> C++帔R的表C?/font> <div> <br /> <font face="宋体" size="4"> </font> </div> <div> <font face="宋体" size="4">    一、char型常?/font> </div> <div> <font face="宋体" size="4"> <br />    (一)单个字符:用单引号定界Q如'a'QC++转义字符如下Q?br />        (01)\n        换行<br />        (02)\r        回R<br />        (03)\t        水^制表W?br />        (04)\v        垂直制表W?br />        (05)\b        退?br />        (06)\a        振铃<br />        (07)\\        字符\<br />        (08)\'        字符'<br />        (09)\"        字符"<br />        (10)\...      1-3位八q制ASCII码代表的字符('\101')<br />        (11)\x.....   十六q制ASCII码代表的字符Q位数约束不严格Q在字符串表C某个字W时h</font> <font face="宋体" size="4">用之<br />        (12)\uxxxx    四位16q制数字<br />          或\Uxxxxxxxx八位16q制数字实现通用W号(Universal character name)<br />          注意Q必L四位或八位,位数或多都?x)出错?/font> </div> <div> <font face="宋体" size="4">    </font> </div> <div> <font face="宋体" size="4">    (?字符Ԍ用双引号定界Q如"Code::Blocks"Q注意字W串的长度与占用内存的大,因字W串l?/font> <font face="宋体" size="4">束标志ؓ(f)'\0'Q所以占用内存的大小比实际可用长度多1个字W。字W串l束标志不必特别指明Q?/font> <font face="宋体" size="4">"abcdeabcde\0",特别指明反而会(x)再多占用一个字节的内存I间?br />#include <iostream><br />#include <cstring><br />    <br />using namespace std;</font> </div> <div> <font face="宋体" size="4"> </font> </div> <div> <font face="宋体" size="4">int main(int argc,char** argv) {<br />    char s[13]="abcdeabcde";</font> </div> <div> <font face="宋体" size="4">    char s1[]="abcdeabcde";</font> </div> <div> <font face="宋体" size="4">    char s2[]="abcdeabcde\0\0\0\0";<br />    cout<<sizeof(s)<<endl;<br />    cout<<strlen(s)<<endl;</font> </div> <div> <font face="宋体" size="4">    cout<<sizeof(s1)<<endl;<br />    cout<<strlen(s1)<<endl;</font> </div> <div> <font face="宋体" size="4">    cout<<sizeof(s2)<<endl;<br />    cout<<strlen(s2)<<endl;    <br />    return EXIT_SUCCESS;<br />}<br />//-----<br />l果为:(x)<br />13<br />10</font> </div> <div> <font face="宋体" size="4">11</font> </div> <div> <font face="宋体" size="4">10</font> </div> <div> <font face="宋体" size="4">15</font> </div> <div> <font face="宋体" size="4">10<br />//-----</font> </div> <div> <font face="宋体" size="4">    </font> </div> <div> <font face="宋体" size="4">    (?wchar_t型常量加前缀LQ只能是大写L。如:<br />        wchar_t c=L'A';//q里的L可不加,看编译器是否认可<br />        wchar_t cc[]=L"mytest";//q里的L必须?/font> </div> <div> <font face="宋体" size="4">?<br />#include <iostream></font> </div> <div> <font face="宋体" size="4">using std::cout;<br />using std::endl;</font> </div> <div> <font face="宋体" size="4">int main(int argc,char** argv) {<br />    wchar_t c=L'A';<br />    char cc='A';<br />    wchar_t cp[]=L"mytest";<br />    char ccp[]="mytest1";<br />    cout<<c<<endl;<br />    cout<<(char)c<<endl;<br />    cout<<cc<<endl;<br />    cout<<cp<<endl;<br />    cout<<ccp<<endl;<br />    return EXIT_SUCCESS;<br />}<br />//-----<br />65<br />A<br />A<br />0x22ff60<br />mytest1<br />//-----</font> </div> <div> <font face="宋体" size="4"> </font> </div> <div> <font face="宋体" size="4">    二、整型常?/font> </div> <div> <font face="宋体" size="4"> <br /> </font> </div> <div> <font face="宋体" size="4">    (一)书写帔RӞ若不加Q何修饰符Q编译器通常?x)认为是int整型Q但有时也会(x)Ҏ(gu)操作自动实现</font> <font face="宋体" size="4">合适的转换?br />#include <iostream><br />#include <climits></font> </div> <div> <font face="宋体" size="4">using namespace std;</font> </div> <div> <font face="宋体" size="4">int main(int argc,char** argv) {<br />    cout<<INT_MAX<<endl;<br />    cout<<SHRT_MAX<<endl;<br />    short x=32768;<br />    short k=32767+1;<br />    long long y=2147483647;<br />    long long d=INT_MAX+1;<br />    cout<<x<<endl;<br />    cout<<k<<endl;<br />    cout<<y<<endl;<br />    cout<<d<<endl;<br />    return EXIT_SUCCESS;<br />}<br />//-----<br />2147483647<br />32767<br />-32768<br />-32768<br />2147483647<br />-2147483648<br />//-----</font> </div> <div> <font face="宋体" size="4"> </font> </div> <div> <font face="宋体" size="4">    (?无符h型后~是U(u),long型后~是L(l),long long型后~是LL(ll)QL或LL或以与Ul合?/font> </div> <div> <br /> <font face="宋体" size="4">    三、Q点型帔R</font> </div> <div> <font face="宋体" size="4"> <br />    默认是doublecdQ表Cfloatcd帔R加后~F(f)Q表Clong doublecd帔R加后~L(l)?/font> </div> <div> <font face="宋体" size="4"> </font> </div> <div> <font face="宋体" size="4">    四、布?yu)(dng)型帔R只有true和falseQ只认小写。当然可以用常数来表C,0为假Q非零ؓ(f)真?/font> </div> <div> </div> <div> <font face="宋体" size="4">bool x=false;<br />bool y=1.234;<br />cout<<x<<endl;<br />cout.setf(ios_base::boolalpha);<br />cout<<y<<endl;</font> </div> <div> <font face="宋体" size="4">//-----<br />0<br />true<br />//-----</font> </div> <div> <font face="宋体" size="4"> </font> </div> <div> <font face="宋体" size="4">?:只有一个函敎ͼ但调用时参数不同Q编译器量匚w<br />#include <iostream></font> </div> <div> <font face="宋体" size="4">using namespace std;</font> </div> <div> <font face="宋体" size="4">void show(long);</font> </div> <div> <font face="宋体" size="4">int main(int argc,char** argv) {<br />    show(123);<br />    show(123L);<br />    show(123UL);<br />}</font> </div> <div> <font face="宋体" size="4">void show(long demo) {<br />    cout<<"long"<<endl;<br />}<br />//-----<br />long<br />long<br />long<br />//-----</font> </div> <div> <font face="宋体" size="4">?:有多个函敎ͼ~译器会(x)认ؓ(f)是h计函数重载,不再自动匹?br />#include <iostream></font> </div> <div> <font face="宋体" size="4">using namespace std;</font> </div> <div> <font face="宋体" size="4">void show(int);<br />void show(long);<br />void show(unsigned long);</font> </div> <div> <font face="宋体" size="4">int main(int argc,char** argv) {<br />    show(123);<br />    show(123L);<br />    show(123UL);//改ؓ(f)show(123LL)试试如何Q将?x)出错?br />}</font> </div> <div> <font face="宋体" size="4">void show(int demo) {<br />    cout<<"int"<<endl;<br />}<br />void show(long demo) {<br />    cout<<"long"<<endl;<br />}<br />void show(unsigned long demo) {<br />    cout<<"unsigned long"<<endl;<br />}<br />//-----<br />int<br />long<br />unsigned long<br />//-----</font> </div> <img src ="http://www.aygfsteel.com/Yipak/aggbug/227334.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Yipak/" target="_blank">ȝ</a> 2008-09-05 22:24 <a href="http://www.aygfsteel.com/Yipak/articles/227334.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>VC_文g操作http://www.aygfsteel.com/Yipak/articles/227022.htmlȝȝThu, 04 Sep 2008 09:25:00 GMThttp://www.aygfsteel.com/Yipak/articles/227022.htmlhttp://www.aygfsteel.com/Yipak/comments/227022.htmlhttp://www.aygfsteel.com/Yipak/articles/227022.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/227022.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/227022.html 1 Q?/span>   文g的查?/span>  

当对一个文件操作时Q如果不知道该文件是否存在,p首先q行查找?/span> MFC 中有一个专门用来进行文件查扄c?/span> “CFileFind?/font> Q用它可以方便快捷地进行文件的查找。下面这D代码演CZq个cȝ最基本使用Ҏ(gu)?/span>  

CString strFileTitle; 

CFileFind finder; 

BOOL bWorking = finder.FindFile("C:\\windows\\sysbkup\\*.cab"); 

while(bWorking) 



bWorking=finder.FindNextFile(); 

strFileTitle=finder.GetFileTitle(); 



2
Q?/span>   文g的打开 / 保存对话?/span>
 

让用户选择文gq行打开和存储操作时Q就要用到文件打开 / 保存对话框?/span> MFC 的类 “CFileDialog?/font> 用于实现q种功能。?/span> “CFileDialog?/font> 声明一个对象时Q第一?/span> BOOL 型参数用于指定文件的打开或保存,当ؓ(f) TRUE 时将构造一个文件打开对话框,?/span> FALSE 时构造一个文件保存对话框?/span>  

在构?/span> “CFileDialog?/font> 对象Ӟ如果在参C指定?/span> “OFN_ALLOWMULTISELECT?/font> 风格Q则在此对话框中可以q行多选操作。此时要重点注意为此 “CFileDialog?/font> 对象?/span> “m_ofn.lpstrFile?/font> 分配一块内存,用于存储多选操作所q回的所有文件\径名Q如果不q行分配或分配的内存q小׃(x)D操作p|。下面这D늨序演CZ文g打开对话框的使用Ҏ(gu)?/span>  

CFileDialog mFileDlg(TRUE, NULL,NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_ALLOWMULTISELECT, "All Files (*.*)|*.*| |", AfxGetMainWnd());

CString str(" ", 10000); 

mFileDlg.m_ofn.lpstrFile=str.GetBuffer(10000); 

str.ReleaseBuffer(); 

POSITION mPos=mFileDlg.GetStartPosition(); 

CString pathName(" ", 128); 

CFileStatus status; 

while(mPos!=NULL) 



pathName=mFileDlg.GetNextPathName(mPos); 

CFile::GetStatus(pathName, status); 



3
Q?/span>   文g的读?/span>
 

文g的读写非帔R要,下面重点进行介l。文件读写最普通的Ҏ(gu)是直接?/span> “CFile?/font> c进行,如文件的d可以使用下面的方法:(x)  

//
Ҏ(gu)件进行读操作
 

char sRead[2]; 

CFile mFile(_T("user.txt"),CFile::modeRead); 

if(mFile.GetLength()<2) 

return; 

mFile.Read(sRead
Q?/span>
2); 

mFile.Close(); 

//
Ҏ(gu)件进行写操作
 

CFile mFile(_T("user.txt"), CFile::modeWrite|CFile::modeCreate); 

mFile.Write(sRead
Q?/span>
2); 

mFile.Flush(); 

mFile.Close(); 

虽然q种Ҏ(gu)最为基本,但是它用烦琐,而且功能非常单。这里推荐的是?/span> “CArchive?/font> Q它的用方法简单且功能十分强大。首先还是用 “CFile?/font> 声明一个对象,然后用这个对象的指针做参数声明一?/span> “CArchive?/font> 对象Q这样就可以非常方便地存储各U复杂的数据cd了。它的用方法见下例Q?/span>  

//
Ҏ(gu)件进行写操作
 

CString strTemp; 

CFile mFile; 

mFile.Open("d:\\dd\\try.TRY",CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite); 

CArchive ar(&mFile
Q?/span>
CArchive::store); 

ar<<strTemp; 

ar.Close(); 

mFile.Close(); 

//
Ҏ(gu)件进行读操作
 

CFile mFile; 

if(mFile.Open("d:\\dd\\try.TRY"
Q?/span>
CFile::modeRead)==0) 

return; 

CArchive ar(&mFile
Q?/span>
CArchive::load); 

ar>>strTemp; 

ar.Close(); 

mFile.Close(); 

“CArchive?/font>
?/span> ?lt;<?/font> ?/span> ?gt;>?/font> 操作W用于简单数据类型的dQ对?/span> “CObject?/font> zcȝ对象的存取要使用 ReadObject() ?/span> WriteObject() 。?/span> “CArchive?/font> ?/span> ReadClass() ?/span> WriteClass() q可以进行类的读写,如:(x)  

//
存储 CAboutDlg c?/span>
 

ar.WriteClass(RUNTIME_CLASS(CAboutDlg)); 

//
d CAboutDlg c?/span>
 

CRuntimeClass*mRunClass=ar.Read 

Class(); 

//
使用 CAboutDlg c?/span>
 

CObject* pObject=mRunClass->CreateObject(); 

((CDialog* )pObject)->DoModal(); 

虽然 VC 提供的文?/span> / 视结构中的文档也可进行这些操作,但是不容易理解、用和理Q如果要q行的文件操作只是简单的d整行的字W串Q徏议?/span> “CStdioFile?/font> Q用它来q行此类操作非常方便Q如下例Q?/span>  

CStdioFile mFile; 

CFileException mExcept; 

mFile.Open( "d:\\temp\\aa.bat", CFile::modeWrite, &mExcept); 

CString string="I am a string."; 

mFile.WriteString(string); 

mFile.Close(); 

4
Q(f)时文件的使用
 

正规软gl常用到临时文gQ经常可以看?/span> “C:\Windows\Temp?/font> 目录下有大量的扩展名?/span> ?tmp?/font> 的文Ӟq些是E序q行时徏立的临时文g。(f)时文件的使用Ҏ(gu)基本与常规文件一P只是文g名应该调用函?/span> GetTempFileName() 获得。它的第一个参数是建立此(f)时文件的路径Q第二个参数是徏立(f)时文件名的前~Q第四个参数用于得到建立的(f)时文件名。得到此临时文g名以后,可以用它来建立q操作文件了Q如Q?/span>  

char szTempPath[_MAX_PATH]
Q?/span>
szTempfile[_MAX_PATH]; 

GetTempPath(_MAX_PATH, szTempPath); 

GetTempFileName(szTempPath
Q?/span> _T ("my_") Q?/span> 0 Q?/span>
szTempfile); 

CFile m_tempFile(szTempfile
Q?/span>
CFile:: modeCreate|CFile:: modeWrite); 

char m_char='a'; 

m_tempFile.Write(&m_char
Q?/span>
2); 

m_tempFile.Close(); 

5
Q文件的复制、删除等
 

MFC
中没有提供直接进行这些操作的功能Q因而要使用 SDK ?/span> SDK 中的文g相关函数常用的有 CopyFile() ?/span> CreateDirectory() ?/span> DeleteFile() ?/span> MoveFile() 。它们的用法很简单,可参?/span> MSDN ?/span>



ȝ 2008-09-04 17:25 发表评论
]]>
介绍一个P2PҎ(gu)直播开源项目,Z错的http://www.aygfsteel.com/Yipak/articles/227019.htmlȝȝThu, 04 Sep 2008 09:17:00 GMThttp://www.aygfsteel.com/Yipak/articles/227019.htmlhttp://www.aygfsteel.com/Yipak/comments/227019.htmlhttp://www.aygfsteel.com/Yipak/articles/227019.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/227019.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/227019.html使用q_Q?br />

客户?/span>:Windows q_

服务?/span>:Windows & Linux


框架图例Q?br />

目介:(x)
 P2PҎ(gu)直播开源项目是一个由Kevin发vQ多人参与开发ƈ不断更新Q符合GPL开源协议的开源项目?/p>

目成员Q 系l架构及(qing)初期开发:(x) W文U?Kevin), 马军(Mark), 张威, 高成, 王亮
  LINUX相关开?   李桂?QQ:674859634)
  JSP|站pȝ:   伍林(QQ:86409354)
  ASP|站pȝ:   徐小?QQ:275992019)
  Bittorrent模块:  Lism(QQ:32437503[Johnny]), 肖双?3707878[Color_X])

目的Q羃短企业同cd目开发周期,集成多种P2P协议Q如BT,EMULE{?/p>

主要功能Q?br /> Peer 间传输数据采用UDPQ能有效的穿透防火墙Q在q一步的版本中将实现TCP?qing)UPNPIK?br /> 能够实现媒体的Ҏ(gu)?qing)直播,q能׃n其他文gQ文件类型不限?br /> 媒体文件支持广泛,如rmvb,wmv,flv,mp4{?/p>

源代码下载论坛:(x)http://opensource.kan8888.com

SVN下蝲地址Q?/p>

 工程地址: svn://p2p.kan8888.com/P2PCenter
 用户名:(x)mc_public
 密码Qkan8888.com

sourceforge.net 下蝲地址Q?br />website:http://p2pmedia.svn.sourceforge.net
SVN 地址Q?a >https://p2pmedia.svn.sourceforge.net/svnroot/p2pmedia

演示|站Q?a >http://www.skyvcd.com

最新源代码打包下蝲Q?a >http://opensource.kan8888.com/soft/P2PCenter_last.rar

P2PҎ(gu)直播开源项?非常不错
http://opensource.kan8888.com



ȝ 2008-09-04 17:17 发表评论
]]>
Ansi、Unicode、UTF8字符串之间的转换和写入文本文?http://www.aygfsteel.com/Yipak/articles/227015.htmlȝȝThu, 04 Sep 2008 09:12:00 GMThttp://www.aygfsteel.com/Yipak/articles/227015.htmlhttp://www.aygfsteel.com/Yipak/comments/227015.htmlhttp://www.aygfsteel.com/Yipak/articles/227015.html#Feedback0http://www.aygfsteel.com/Yipak/comments/commentRss/227015.htmlhttp://www.aygfsteel.com/Yipak/services/trackbacks/227015.html转蝲h明出?a >http://www.cppblog.com/greatws/archive/2008/08/31/60546.html

最q有人问我关于这个的问题Q就此写一blog

Ansi字符串我们最熟?zhn)Q英文占一个字节,汉字2个字节,以一个\0l尾Q常用于txt文本文g
Unicode字符Ԍ每个字符(汉字、英文字?都占2个字节,?个连l的\0l尾QNT操作pȝ内核用的是这U字W串Q常被定义ؓ(f)typedef unsigned short wchar_t;所以我们有时常?x)见C么char*无法转换为unsigned short*之类的错误,其实是unicode
UTF8是Unicode一U压~Ş式,英文A在unicode中表CZؓ(f)0x0041Q老外觉得q种存储方式太浪费,因ؓ(f)费?0%的空_(d)于是把英文压羃?个字节,成了utf8~码Q但是汉字在utf8中占3个字节,昄用做中文不如ansi合算Q这是中国的网는作ansi~码而老外的网常用utf8的原因?br />UTF8在还游戏里运用的很广泛,比如WOW的lua脚本{?br />
下面来说一下{换,主要用代码来说明?br />写文件我用了CFilec,其实用FILE*之类的也是一P写文件和字符串什么类别没有关p,g只关心数据和长度

Ansi转Unicode
介绍2U方?br />


void  CConvertDlg::OnBnClickedButtonAnsiToUnicode()
{
    
//  ansi to unicode
     char *  szAnsi  =   " abcd1234你我?/span> " ;
    
// 预{换,得到所需I间的大?/span>
     int  wcsLen  =  ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), NULL,  0 );
    
// 分配I间要给'\0'留个I间QMultiByteToWideChar不会(x)l?\0'I间
    wchar_t *  wszString  =   new  wchar_t[wcsLen  +   1 ];
    
// 转换
    ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), wszString, wcsLen);
    
// 最后加?\0'
    wszString[wcsLen]  =   ' \0 ' ;
    
// unicode版的MessageBox API
    ::MessageBoxW(GetSafeHwnd(), wszString, wszString, MB_OK);

    
// 接下来写入文?br />     // 写文本文Ӟ?个字?xfeffQ低?xff写在?/span>
    CFile cFile;
    cFile.Open(_T(
" 1.txt ") , CFile::modeWrite  |  CFile::modeCreate);
    
// 文g开?/span>
    cFile.SeekToBegin();
    cFile.Write(
" \xff\xfe " 2 );
    
// 写入内容
    cFile.Write(wszString, wcsLen  *   sizeof (wchar_t));
    cFile.Flush();
    cFile.Close();
    delete[] wszString;
    wszString 
= NULL;


    
// Ҏ(gu)2
    
// 讄当前地域信息Q不讄的话Q用这U方法,中文不会(x)正确昄
    
// 需?include<locale.h>
    setlocale(LC_CTYPE,  " chs " ); 
    wchar_t wcsStr[
100 ];
    
// 注意下面是大写SQ在unicode中,代表后面是ansi字符?br />     // swprintf是sprintf的unicode版本
    
// 格式的前面要加大写LQ代表是unicode
    swprintf(wcsStr, L " %S " , szAnsi);
    ::MessageBoxW(GetSafeHwnd(), wcsStr, wcsStr, MB_OK);

}


Unicode转Ansi
也是2U方?br />
void CConvertDlg::OnBnClickedButtonUnicodeToAnsi()
{
    
// unicode to ansi
    wchar_t* wszString = L"abcd1234你我?/span>";
    
//预{换,得到所需I间的大,q次用的函数和上面名字相?/span>
    int ansiLen = ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL);
    
//同上Q分配空间要l?\0'留个I间
    char* szAnsi = new char[ansiLen + 1];
    
//转换
    
//unicode版对应的strlen是wcslen
    ::WideCharToMultiByte(CP_ACP, NULL, wszString, wcslen(wszString), szAnsi, ansiLen, NULL, NULL);
    
//最后加?\0'
    szAnsi[ansiLen] = '\0';
    
//Ansi版的MessageBox API
    ::MessageBoxA(GetSafeHwnd(), szAnsi, szAnsi, MB_OK);

    
//接下来写入文?br />    //写文本文ӞANSI文g没有BOM
    CFile cFile;
    cFile.Open(_T(
"1.txt"), CFile::modeWrite | CFile::modeCreate);
    
//文g开?/span>
    cFile.SeekToBegin();
    
//写入内容
    cFile.Write(szAnsi, ansiLen * sizeof(char));
    cFile.Flush();
    cFile.Close();
    delete[] szAnsi;
    szAnsi 
=NULL;


    
//Ҏ(gu)2
    
//和上面一h另一U方?/span>
    setlocale(LC_CTYPE, "chs"); 
    
char szStr[100];
    
//注意下面是大写,在ansi中,代表后面是unicode字符?br />    //sprintf
    sprintf(szStr, "%S", wszString);
    ::MessageBoxA(GetSafeHwnd(), szStr, szStr, MB_OK);
}


Unicode转UTF8

void CConvertDlg::OnBnClickedButtonUnicodeToU8()
{
    
// unicode to UTF8
    wchar_t* wszString = L"abcd1234你我?/span>";
    
//预{换,得到所需I间的大,q次用的函数和上面名字相?/span>
    int u8Len = ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), NULL, 0, NULL, NULL);
    
//同上Q分配空间要l?\0'留个I间
    
//UTF8虽然是Unicode的压~Ş式,但也是多字节字符Ԍ所以可以以char的Ş式保?/span>
    char* szU8 = new char[u8Len + 1];
    
//转换
    
//unicode版对应的strlen是wcslen
    ::WideCharToMultiByte(CP_UTF8, NULL, wszString, wcslen(wszString), szU8, u8Len, NULL, NULL);
    
//最后加?\0'
    szU8[u8Len] = '\0';
    
//MessageBox不支持UTF8,所以只能写文g

    
//接下来写入文?br />    //写文本文ӞUTF8的BOM?xbfbbef
    CFile cFile;
    cFile.Open(_T(
"1.txt"), CFile::modeWrite | CFile::modeCreate);
    
//文g开?/span>
    cFile.SeekToBegin();
    
//写BOMQ同样低位写在前
    cFile.Write("\xef\xbb\xbf"3);
    
//写入内容
    cFile.Write(szU8, u8Len * sizeof(char));
    cFile.Flush();
    cFile.Close();
    delete[] szU8;
    szU8 
=NULL;

}

UTF8转UNICODE

void CConvertDlg::OnBnClickedButtonU8ToUnicode()
{
    
//UTF8 to Unicode
    
//׃中文直接复制q来?x)成qQ编译器有时?x)报错,故采?6q制形式
    char* szU8 = "abcd1234\xe4\xbd\xa0\xe6\x88\x91\xe4\xbb\x96\x00";
    
//预{换,得到所需I间的大?/span>
    int wcsLen = ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), NULL, 0);
    
//分配I间要给'\0'留个I间QMultiByteToWideChar不会(x)l?\0'I间
    wchar_t* wszString = new wchar_t[wcsLen + 1];
    
//转换
    ::MultiByteToWideChar(CP_UTF8, NULL, szU8, strlen(szU8), wszString, wcsLen);
    
//最后加?\0'
    wszString[wcsLen] = '\0';
    
//unicode版的MessageBox API
    ::MessageBoxW(GetSafeHwnd(), wszString, wszString, MB_OK);

    
//写文本同ansi to unicode
}



Ansi转换utf8和utf8转换Ansi是上面2个的l合Q把unicode作ؓ(f)中间量,q行2ơ{换即?br />
by greatws

ȝ 2008-09-04 17:12 发表评论
]]>
用C#实现语音技?/title><link>http://www.aygfsteel.com/Yipak/articles/226960.html</link><dc:creator>ȝ</dc:creator><author>ȝ</author><pubDate>Thu, 04 Sep 2008 07:02:00 GMT</pubDate><guid>http://www.aygfsteel.com/Yipak/articles/226960.html</guid><wfw:comment>http://www.aygfsteel.com/Yipak/comments/226960.html</wfw:comment><comments>http://www.aygfsteel.com/Yipak/articles/226960.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/Yipak/comments/commentRss/226960.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/Yipak/services/trackbacks/226960.html</trackback:ping><description><![CDATA[“电(sh)脑朗诠Z(英文Q一个很好的触发点,通过它可以实现电(sh)子小说阅诅R英文听力测试、英文单词学?.. <br /><br />下面的Speech已对MSTTS作了单封装?<br /><br />1.安装好MSTTSQ如果你有装金山词霸Q系l就已经安装了),可以在winnt\speech中打到vtxtauto.tlb文gQ?<br /><br />2.?Net SDK自带的tlbimp工具把vtxtauto.tlb转换?dll格式: <br /><br />tlbimp vtxtauto.tlb /silent /namespace:mstts /out:mstts.dll <br /><br />q时的mstts.dll已成?net frameworkq行库的一个类?<br /><br />3.~写一个封装vtxtauto的简单类:Speech . <br /><br />//========================Speech.cs====================== <br /><br />using SystemQ?<br /><br />using msttsQ?//MSTTS名称I间 <br /><br />namespace Bedlang{ //定义名称I间 <br /><br />public class Speech{ <br /><br />private VTxtAuto VTxtAutoExQ?<br /><br />public SpeechQ){ <br /><br />VTxtAutoEx = new VTxtAutoQ)Q?<br /><br />VTxtAutoEx.RegisterQ? "," "Q; //注册COMlg <br /><br />} <br /><br />public void SpeakQString textQ{ <br /><br />VTxtAutoEx.SpeakQtext, 0Q; //发音 <p class="Lpj418">专业?S?3s8.cn</p><br /><br />} <br /><br />} <br /><br />} <br /><br />//========================Speech.cs====================== <br /><br /><br />4.~译B(ti)edlang.Speech <br /><br />csc /target:library /out:Bedlang.dll speech.cs /r:mstts.dll <br /><br />如果用vs.net开发,可直接生成项目就可以了?<br /><br />5.发音实现 <br /><br />//========================demo.cs====================== <br /><br />分别加入Label,TextBox,Button控g各一个到windows Form中,修改它们的属性,源代码如下:(x) <br /><br />using SystemQ?<br /><br />using System.DrawingQ?<br /><br />using System.CollectionsQ?<br /><br />using System.ComponentModelQ?<br /><br />using System.Windows.FormsQ?<br /><br />using System.DataQ?<br /><br />namespace Bedlang <br /><br />{ <br /><br />/// <br /><br />/// Form1 的摘要说明?<br /><br />/// <br /><br />public class demo : System.Windows.Forms.Form <br /><br />{ <br /><br />private System.Windows.Forms.Label label1Q?<br /><br />private System.Windows.Forms.TextBox textBox1Q?<br /><br />private System.Windows.Forms.Button button1Q? <p class="Lpj418">专业?S?3s8.cn</p><br /><br />/// <br /><br />/// 必需的设计器变量?<br /><br />/// <br /><br />private System.ComponentModel.Container components = nullQ?<br /><br />public demoQ) <br /><br />{ <br /><br />// <br /><br />// Windows H体设计器支持所必需?<br /><br />// <br /><br />InitializeComponentQ)Q?<br /><br />// <br /><br />// TODO: ?InitializeComponent 调用后添加Q何构造函C?<br /><br />// <br /><br />} <br /><br />/// <br /><br />/// 清理所有正在用的资源?<br /><br />/// <br /><br />protected override void DisposeQ?bool disposing Q?<br /><br />{ <br /><br />ifQ?disposing Q?<br /><br />{ <br /><br />if Qcomponents != nullQ?<br /><br />{ <br /><br />components.DisposeQ)Q?<br /><br />} <br /><br />} <br /><br />base.DisposeQ?disposing Q; <br /><br />} <br /><img src ="http://www.aygfsteel.com/Yipak/aggbug/226960.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/Yipak/" target="_blank">ȝ</a> 2008-09-04 15:02 <a href="http://www.aygfsteel.com/Yipak/articles/226960.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss> <footer> <div class="friendship-link"> <a href="http://www.aygfsteel.com/" title="狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频">狠狠久久亚洲欧美专区_中文字幕亚洲综合久久202_国产精品亚洲第五区在线_日本免费网站视频</a> </div> </footer> վ֩ģ壺 <a href="http://" target="_blank">ͤ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Դ</a>| <a href="http://" target="_blank">ʤ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">Ƕ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">޳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ϼ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ܱ</a>| <a href="http://" target="_blank">ƽ½</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ɽ</a>| <a href="http://" target="_blank">̨</a>| <a href="http://" target="_blank">̫</a>| <a href="http://" target="_blank">ƽ½</a>| <a href="http://" target="_blank">̳</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">ȷ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank">˾</a>| <a href="http://" target="_blank">γ</a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <a href="http://" target="_blank"></a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>