锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲国产综合久久天堂 ,国产欧美一区二区久久,人妻精品久久久久中文字幕http://www.shnenglu.com/lf426/category/6551.htmlGame Design Using C++ and SDLzh-cnTue, 20 May 2008 18:28:47 GMTTue, 20 May 2008 18:28:47 GMT60SDL鍦╳in32涓嶭inux涓嬬殑涓浜涘樊鍒?/title><link>http://www.shnenglu.com/lf426/archive/2008/05/12/49594.html</link><dc:creator>lf426</dc:creator><author>lf426</author><pubDate>Sun, 11 May 2008 17:55:00 GMT</pubDate><guid>http://www.shnenglu.com/lf426/archive/2008/05/12/49594.html</guid><wfw:comment>http://www.shnenglu.com/lf426/comments/49594.html</wfw:comment><comments>http://www.shnenglu.com/lf426/archive/2008/05/12/49594.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/lf426/comments/commentRss/49594.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lf426/services/trackbacks/49594.html</trackback:ping><description><![CDATA[浣滆咃細榫欓<br><br>        鏈榪戝湪瀛︿範Linux錛屼富瑕佽冭檻鍒拌法騫沖彴寮鍙戙傛垜涓鐩撮兘鍦ㄦ濊冨叧浜庝腑鏂囪緭鍏ョ殑闂錛屽湪win32涓嬭В鍐寵搗鏉ラ偅涔堥夯鐑︼紝闅鵑亾SDL鐨勪綔鑰呬細涓嶈В鍐沖悧鈹鈹濡傛灉鏄痓ug鐨勮瘽銆備簨瀹炶瘉鏄庯紝鍦↙inux騫沖彴涓嬶紝鎴戜滑鑷繁鎶奊B2312寰Unicode杞崲鐨勫伐浣滃氨澶氫綑浜嗐傚綋鍓峀inux鍐呴儴鐢ㄧ殑灝辨槸UTF-8錛堟垜鐨勭郴緇熸槸Debian 4.0錛夛紝SDL鐨凾TF鍑芥暟瀹屽叏鍙互姝e父宸ヤ綔銆備笉榪囷紝鍦↙inux涓嬮潰涔熶細鏈変簺闂錛岀幇鍦ㄥ彂鐜扮殑鏈夎繖浜涳紝澶у鏈夊彂鐜扮殑緇х畫甯垜琛ュ厖鍝堛?br><br>1銆佸湪Linux涓嬶紝<a >TTF_RenderUTF8_Blended</a> 鏄彲浠ユ甯告覆鏌撶畝浣撲腑鏂囩殑銆備絾鏄笉鐭ラ亾涓轟粈涔堬紝Solid鐨勬覆鏌撲細鎶ラ敊錛屽叡浜紙鍔ㄦ侀摼鎺ワ級搴撶殑闂銆?br>2銆佸湪Linux涓嬶紝mid鏂囦歡鐢⊿DL_mixer鏄墦涓嶅紑鐨勩傝嚦灝戞垜鐨勬儏鍐墊槸榪欐牱錛屾垜瑁呬簡ALSA鐨勫0鍗¢┍鍔紝涓嶇煡閬撹繕闇瑕佸仛浜涗粈涔堟墠鑳芥斁midi銆?br>3銆佺洿鎺ヨ浜咥LSA鐨勯┍鍔ㄦ挱鏀維DL_mixer鏄湁鍣煶鐨勩傝В鍐蟲柟娉曪紝涔熸槸鎵撳紑Linux涓嬭蔣浠舵販闊?ESD)鐨勬柟娉曞涓嬶細<br>        娣烽煶鍙互璁╀袱縐嶉煶涔愬悓鏃舵挱鏀撅紝棣栧厛闇瑕佸畨瑁卨ibesd-alsa0錛岀敤Synaptic鎴杝udo apt-get install絳夋柟寮忛兘鍙互榪涜瀹夎錛屽畠灝卞湪Ubuntu瀹樻柟杞歡搴撲腑銆傜劧鍚庯紝鐢╯udo gedit鎴栨偍鍠滄鐨勬枃鏈紪杈戝櫒鍒涘緩鏂囦歡<br>/etc/asound.conf <br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">pcm.card0 {<br>  type hw<br>  card </span><span style="color: #000000;">0</span><span style="color: #000000;"><br>}<br><br>pcm.</span><span style="color: #000000;">!</span><span style="color: #0000ff;">default</span><span style="color: #000000;"> {<br>  type plug<br>  slave.pcm </span><span style="color: #000000;">"</span><span style="color: #000000;">dmixer</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>}<br><br>pcm.dmixer {<br>  type dmix<br>  ipc_key </span><span style="color: #000000;">1025</span><span style="color: #000000;"><br>  slave {<br>    pcm </span><span style="color: #000000;">"</span><span style="color: #000000;">hw:0,0</span><span style="color: #000000;">"</span><span style="color: #000000;"><br>    period_time </span><span style="color: #000000;">0</span><span style="color: #000000;"><br>    period_size </span><span style="color: #000000;">1024</span><span style="color: #000000;"><br>    buffer_size </span><span style="color: #000000;">4096</span><span style="color: #000000;"><br>    periods </span><span style="color: #000000;">128</span><span style="color: #000000;"><br>    rate </span><span style="color: #000000;">44100</span><span style="color: #000000;"><br>  }<br>  bindings {<br>    </span><span style="color: #000000;">0</span><span style="color: #000000;"> </span><span style="color: #000000;">0</span><span style="color: #000000;"><br>    </span><span style="color: #000000;">1</span><span style="color: #000000;"> </span><span style="color: #000000;">1</span><span style="color: #000000;"><br>  }<br>}</span></div> 鎺ヤ笅鏉ワ紝榪愯"sudo gedit /etc/esound/esd.conf"錛屽皢鏂囦歡鏀規垚涓嬮潰鐨勫唴瀹癸細 <br> <div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #000000;">auto_spawn</span><span style="color: #000000;">=</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>spawn_options</span><span style="color: #000000;">=-</span><span style="color: #000000;">terminate </span><span style="color: #000000;">-</span><span style="color: #000000;">nobeeps </span><span style="color: #000000;">-</span><span style="color: #0000ff;">as</span><span style="color: #000000;"> </span><span style="color: #000000;">2</span><span style="color: #000000;"> </span><span style="color: #000000;">-</span><span style="color: #000000;">d </span><span style="color: #0000ff;">default</span><span style="color: #000000;"><br>spawn_wait_ms</span><span style="color: #000000;">=</span><span style="color: #000000;">100</span><span style="color: #000000;"><br># </span><span style="color: #0000ff;">default</span><span style="color: #000000;"> options are used </span><span style="color: #0000ff;">in</span><span style="color: #000000;"> spawned and non</span><span style="color: #000000;">-</span><span style="color: #000000;">spawned mode<br>default_options</span><span style="color: #000000;">=</span><span style="color: #000000;"> <br></span></div> 灞炲疄鎸洪夯鐑︾殑:)<br><img src ="http://www.shnenglu.com/lf426/aggbug/49594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lf426/" target="_blank">lf426</a> 2008-05-12 01:55 <a href="http://www.shnenglu.com/lf426/archive/2008/05/12/49594.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>SDL鍏ラ棬鏁欑▼錛堝崄錛夛細4銆佺敤iconv鑾峰緱姝g‘鐨刄nicode錛屼嬌鐢‵riBiDi瀹炵幇UTF-8鍒癠nicode鐨勬紜漿鎹?/title><link>http://www.shnenglu.com/lf426/archive/2008/03/31/45796.html</link><dc:creator>lf426</dc:creator><author>lf426</author><pubDate>Mon, 31 Mar 2008 03:00:00 GMT</pubDate><guid>http://www.shnenglu.com/lf426/archive/2008/03/31/45796.html</guid><wfw:comment>http://www.shnenglu.com/lf426/comments/45796.html</wfw:comment><comments>http://www.shnenglu.com/lf426/archive/2008/03/31/45796.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/lf426/comments/commentRss/45796.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/lf426/services/trackbacks/45796.html</trackback:ping><description><![CDATA[<p>浣滆咃細榫欓<br><br>4.1錛氫負浠涔坕conv涓嶈兘瀹屽叏姝g‘鐨勮漿鎹nicode錛?br><br>        鎴戜笉鏄厛鐭ワ紝鏁欑▼閲岄潰鏄暣鐞嗚繃鐨勬濊礬鍜岄昏緫欏哄簭錛屽湪鎴戠爺絀惰繖涓棶棰樼殑鏃跺欙紝澶寸華榪滆繙姣旀暀紼嬮噷闈貢寰楀銆傛垜瀹屽叏鏄粠Wesnoth鐨勬簮浠g爜鍘誨垎鏋愰棶棰樼殑錛屾墍浠ワ紝涓轟粈涔堜細鎵笂UTF-8鍜孎riBidi錛岄偅涔熸槸鍥犱負鍦ㄦ簮浠g爜涓壘鍒頒簡綰跨儲銆?br>        iconv涓嶈兘瀹屽叏姝g‘鐨勮幏寰桿nicode錛屼篃灝辨槸鎴戜滑鍒氭墠閬囧埌鐨勭函姹夊瓧杞崲娌¢棶棰橈紝鑰屾湁鑻辨枃灝變笉琛屼簡銆傛垜騫朵笉娓呮榪欐槸win32涓嬬殑闂錛岃繕鏄湪Linux涓嬩篃榪欐牱錛屾垜涔熶笉娓呮鍏蜂綋鐨勭畻娉曞拰闂鐨勬牴鏈師鍥狅紝鎴戝彧鏄氳繃璇曢獙寰楀埌涓涓畻鏄〃闈㈠師鍥犵殑緇撹錛氭垜浠煡閬擄紝GB2312鍜孶nicode姹夊瓧閮戒嬌鐢?涓瓧鑺傦紙鍦║TF-8涓槸3涓瓧鑺傦級錛岃嫳鏂囧拰鏁板瓧絳夌敤1涓瓧鑺傘俰conv鍦ㄥ緱鍒頒袱涓瓧鑺傦紙unsigned char鍗充竴涓瓧鑺傚ぇ灝忥級浠g爜鐨勬椂鍊欏彲浠ユ紜殑灝咷B2312杞寲涓篣nicode錛堟垨鑰匲TF-8錛夛紝浣嗘槸鍙湁1涓瓧鑺傜殑鏃跺欏垯鍦ㄨ漿鍖朥nicode鐨勬椂鍊欑粓姝簡錛屽垢榪愮殑鏄紝濡傛灉鏄漿鍖栦負UTF-8鍒欏彲浠ユ紜殑榪涜錛屽茍涓斾篃杞寲涓?涓瓧鑺傜殑UTF-8錛堝彧闄愪簬鑻辨枃錛屾暟瀛楃瓑錛夈?br>        鎵浠ワ紝鎴戜滑鍙互鍏堥氳繃iconv灝嗗師鏉ョ殑GB2312杞寲涓篣TF-8鈥斺旀眽瀛楃敤3涓瓧鑺傦紙3涓崟浣嶇殑unsigned char錛夛紝鑻辨枃銆佹暟瀛楀拰鍩烘湰絎﹀彿鐢?涓瓧鑺傦紙1涓崟浣嶇殑unsigned char錛夈傜劧鍚庯紝鎴戜滑闇瑕佷竴涓嚱鏁幫紝灝嗚繖縐嶅艦寮忕殑UTF-8杞崲涓篠DL鎵闇瑕佺殑Uint16鐨刄nicode銆備粈涔堟牱鐨勫嚱鏁板彲浠ュ疄鐜拌繖縐嶈漿鎹㈠憿錛?br><br>4.2錛氬叾瀹冪紪鐮佷笌Unicode涔嬮棿鐨勫弻鍚戣漿鎹紝GNU FriBidi<br><a >http://fribidi.freedesktop.org/wiki/</a><br>        FriBidi鏄竴涓嚧鍔涗簬Unicode緙栫爜涓庡叾瀹冪紪鐮佺浉浜掕漿鎹㈢殑寮婧愰」鐩紝鍒扮洰鍓嶄負姝紝榪樻槸涓涓皻鏈畬鎴愮殑欏圭洰銆傛垜鍦ㄧ爺絀禬esnoth婧愪唬鐮佺殑鏃跺欑湅鍒拌繖鏍風殑鍑芥暟錛歠ribidi_utf8_to_unicode()錛屾墍浠ワ紝鎴戞兂鍦ㄨ繖涓嚱鏁頒腑鍙兘搴旇鍖呭惈UTF-8鍒癠nicode鐨勭畻娉曗斺斿笇鏈涗笉瑕佸お澶嶆潅銆傚湪FriBidi欏圭洰涓壘鍒拌繖涓嚱鏁幫紝瀹冨湪鏂囦歡fribidi_char_sets_utf8.c涓嬮潰錛?/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"><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"><br>fribidi_utf8_to_unicode (</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">s, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> len, FriBidiChar </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">us)<br></span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> warning: the length of input string may exceed the length of the output </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>{<br>  </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> length;<br>  </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">t </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> s;<br><br>  length </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>  </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (s </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> t </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> len)<br>    {<br>      </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">) s </span><span style="COLOR: #000000"><=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x7f</span><span style="COLOR: #000000">)    </span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> one byte </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>    {<br>      </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">us</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">s</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;        </span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> expand with 0s </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>    }<br>      </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">) s </span><span style="COLOR: #000000"><=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0xdf</span><span style="COLOR: #000000">)    </span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> 2 byte </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>    {<br>      </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">us</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"><br>        ((</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">) s </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x1f</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"><br>        ((</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">) (s </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)) </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x3f</span><span style="COLOR: #000000">);<br>      s </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;<br>    }<br>      </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">            </span><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> 3 byte </span><span style="COLOR: #008000">*/</span><span style="COLOR: #000000"><br>    {<br>      </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">us</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"><br>        ((</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">) (</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">) s </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x0f</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"><br>        ((</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">) (s </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x3f</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"><br>        (</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">) (s </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x3f</span><span style="COLOR: #000000">);<br>      s </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">;<br>    }<br>      length</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br>    }<br>  </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">us </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>  </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> (length);<br>}</span></div> 鍏朵腑錛屾垜浠壘鍒癋riBidiChar鐨勫畾涔夛紝綾諱技Uint32鐨勭被鍨嬶紱鍙﹀錛屽嚱鏁扮敤char琛ㄧず1瀛楄妭鐨勫崟浣嶃傛牴鎹垜鐨勮瘯楠岋紝鑷沖皯鍦╒C2008涓嬫槸鏈夐敊璇殑錛屾垜浠竴鐩寸敤鐨勬槸unsigned char琛ㄧず1瀛楄妭鐨勫崟浣嶏紝鎵浠ワ紝鎴戜滑闇瑕佸榪欎釜鍑芥暟鍋氫簺淇敼錛?br> <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"><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> myUTF8_to_UNICODE(Uint16</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> unicode, unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> utf8, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> len)<br>{<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> length;<br>    unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> t </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> utf8;<br><br>    length </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>    </span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000"> (utf8 </span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"> t </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> len){<br>        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">one byte.ASCII as a, b, c, 1, 2, 3<img src="http://www.shnenglu.com/Images/dot.gif"> ect</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> ( </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">) utf8 </span><span style="COLOR: #000000"><=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x7f</span><span style="COLOR: #000000"> ) {<br>            </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">expand with 0s.</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">            </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">unicode</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">utf8</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br>        }<br>        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">2 byte.</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> ( </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">) utf8 </span><span style="COLOR: #000000"><=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0xdf</span><span style="COLOR: #000000"> ) {<br>            </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">unicode</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ((</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">) utf8 </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x1f</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> ((</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">) (utf8 </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)) </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x3f</span><span style="COLOR: #000000">);<br>            utf8 </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;<br>        }<br>        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">3 byte.Chinese may use 3 byte.</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"> {<br>            </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">unicode</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> ((</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">) (</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">) utf8 </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x0f</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"><br>                ((</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">) (utf8 </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x3f</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000"><<</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"><br>                (</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">) (utf8 </span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">) </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0x3f</span><span style="COLOR: #000000">);<br>            utf8 </span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">;<br>        }<br>        length</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br>    }<br><br>    </span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">unicode </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>    <br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> (length);<br>}</span></div> <br>4.3錛氬皢姹夊瓧錛岃嫳鏂囷紝鏁板瓧鍜岀鍙烽兘姝g‘鐨勮漿鎹負16浣嶇殑Unicode<br><br>        鏈変簡iconv鍜屼笂闈㈣繖涓嚱鏁幫紝鎴戜滑緇堜簬鍙互灝咷B2312鐨勭紪鐮佹紜殑杞崲涓篣nicode浜嗐?br> <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"><span style="COLOR: #008000">//</span><span style="COLOR: #008000">FileName: gb2312_to_Unicode.h</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">#ifndef GB2312_TO_UNICODE_H_<br></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000"> GB2312_TO_UNICODE_H_</span><span style="COLOR: #000000"><br><br>#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">GNU/iconv.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br>#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">SDL/SDL.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><br>std::vector</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">Uint16</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> getUnicode(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> std::</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> str);<br><br></span><span style="COLOR: #0000ff">#endif</span></div> 瀹炵幇鏂囦歡涓寘鍚垜浠笂闈㈠啓鐨勪粠UTF-8鍒癠nicode鐨勫嚱鏁幫細<br> <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"><span style="COLOR: #000000">#include </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">gb2312_to_Unicode.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> myUTF8_to_UNICODE(Uint16</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> unicode, unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> utf8, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> len);<br><br>std::vector</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">Uint16</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> getUnicode(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> std::</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&</span><span style="COLOR: #000000"> str)<br>{<br>    </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> CHAR_SIZE </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">256</span><span style="COLOR: #000000">;<br>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">GB2312 src</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> src </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)(str.c_str());<br>    size_t src_len </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> strlen((</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)src);<br>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Unicode dst to get</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">    unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000"> dst[CHAR_SIZE] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> {</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">};<br>    size_t dst_len </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(dst);<br>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">iconv arg</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> src;<br>    unsigned </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> dst;<br><br>    iconv_t cd;<br>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">GB2312 to UTF-8</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">    cd </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> iconv_open(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">UTF-8</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">GB2312</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br>    </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> ((iconv_t)</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">==</span><span style="COLOR: #000000"> cd){<br>        exit (</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br>    }<br>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">conversion</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">    iconv(cd, (</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">src_len, (</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&</span><span style="COLOR: #0000ff">out</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">&</span><span style="COLOR: #000000">dst_len);<br><br>    </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">UTF-8 to Unicode</span><span style="COLOR: #008000"><br></span><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> utf8Len </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> strlen((</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)dst);<br>    Uint16 unicodeData[CHAR_SIZE] </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> {</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">};<br>    </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> unicodeLen </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> myUTF8_to_UNICODE(unicodeData, dst, utf8Len);<br>    std::vector</span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">Uint16</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"> unicodeVectorArray;<br>    </span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000"> (</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> i </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">; i </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000"> unicodeLen; i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">) {<br>        unicodeVectorArray.push_back(unicodeData[i]);<br>    }<br>    <br>    iconv_close(cd); <br>    </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> unicodeVectorArray;<br>}</span></div> 鍑芥暟鎶婁竴涓猻td::string杞崲浣峌int16鐨剉ector鏁扮粍騫惰繑鍥烇紝榪欐鏄疭DL鎵闇瑕佺殑Unicode鏍煎紡銆? <img src ="http://www.shnenglu.com/lf426/aggbug/45796.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/lf426/" target="_blank">lf426</a> 2008-03-31 11:00 <a href="http://www.shnenglu.com/lf426/archive/2008/03/31/45796.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>SDL鍏ラ棬鏁欑▼錛堝崄錛夛細3銆佸瓧絎﹂泦涔嬮棿鐨勮漿鎹紝win32涓嬬殑libiconvhttp://www.shnenglu.com/lf426/archive/2008/03/30/45738.htmllf426lf426Sun, 30 Mar 2008 04:45:00 GMThttp://www.shnenglu.com/lf426/archive/2008/03/30/45738.htmlhttp://www.shnenglu.com/lf426/comments/45738.htmlhttp://www.shnenglu.com/lf426/archive/2008/03/30/45738.html#Feedback0http://www.shnenglu.com/lf426/comments/commentRss/45738.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/45738.html
3.1錛欸NU鐨刲ibiconv欏圭洰
http://www.gnu.org/software/libiconv/
        鍐嶄竴嬈$殑錛屾劅璋紵澶х殑GNU銆傛垜浠渶瑕佺殑鏄疷nicode鐮侊紝鍦ㄧ▼搴忎腑杞崲錛屾垜浠渶瑕佺浉搴旂殑搴撱俵ibiconv鏀寔璁稿瀛楃闆嗭紝鍖呮嫭鎴戜滑灝嗙敤鍒扮殑GB2312錛孶TF-8鍜孶CS-2錛圲nicode錛夈傚叿浣撶殑錛屽湪欏圭洰涓婚〉涓婃湁璇︾粏鐨勮鏄庛傛垜浠渶瑕佹柊瀛︿範鐩存帴鐢ㄧ殑綾誨騫朵笉綣佸錛屽悓鏍風殑錛屽鏋滀綘娌′粈涔堝叴瓚h嚜宸辯紪璇戞簮浠g爜錛屽彲浠ョ洿鎺ョ敤鍦╳in32涓嬬紪璇戝ソ鐨勫ご鏂囦歡錛屽簱鍜屽姩鎬侀摼鎺ュ簱錛圖LL錛夈倃in32涓嬬殑欏圭洰涓婚〉鏄細
http://gettext.sourceforge.net/
鏈夎叮鐨勬槸錛屼綔鑰呮妸瀹冧綔涓轟簡鎴戜滑鍓嶉潰鎻愬埌鐨刧ettext鐨勪竴閮ㄥ垎銆傚湪涓嬭澆欏甸潰涓婏紝鎴戜滑鐩存帴閫夋嫨libiconv-win32錛屽悓鏍風殑錛屾垜鐩存帴緇欏嚭鎵闇瑕佺殑涓夐儴鍒嗘枃浠剁殑鐩稿叧淇℃伅錛?br>iconv.h錛氬ご鏂囦歡錛岃鍦–++浠g爜涓?include榪涙潵錛?br>iconv.lib錛氬簱鏂囦歡錛屽湪緙栬瘧鏃跺欎嬌鐢紱
iconv.dll錛氬姩鎬侀摼鎺ュ簱錛岃鏀懼埌exe鏂囦歡鑳芥壘鍒扮殑璺緞涓嬶紙閫氬父涓巈xe鍦ㄥ悓涓鏂囦歡澶逛笅闈級
        涓嬮潰錛屾垜浠湅鐪媗ibiconv鐨勪嬌鐢ㄦ柟娉曘?br>
3.2錛歭ibiconv鐨勬紨紺虹▼搴?br>鎴戜滑榪樻槸杈瑰啓紼嬪簭杈瑰仛璇存槑錛?br>
#include <iostream>
#include 
<string>
#include 
<iomanip>
#include 
"GNU/iconv.h"

void showHex(int x);
<iomanip>鍜宻howHex鍑芥暟錛屾槸鐢ㄦ潵鐜板疄16榪涘埗鐨勩傛垜浠湪鍓嶉潰鐢ㄨ繃銆?br>
int main(int argc, char* argv[])
{
    
//src string
    const std::string str = "浣犲ソ";
    
//string size
    const int STR_SIZE = 256;
    
//string to be changed
    const unsigned char* src = (const unsigned char*)(str.c_str());
    size_t src_len 
= strlen((char*)src);
    
//string after changed
    unsigned char dst[STR_SIZE] = {0};
    size_t dst_len 
= sizeof(dst);
    
//iconv's arg
    const unsigned char* in = src;
    unsigned 
char* out = dst;
    std::cout 
<< "src: " << src << std::endl;
鎴戜滑鐢ㄦ潵杞崲鐨勫瓧絎︿覆鏄?#8220;綰腑鏂?#8221;錛堜負浠涔堟垜瑕佸姞寮曞彿閲嶇偣璇存槑錛屽悗闈細鏈夊師鍥犵殑瑙i噴錛?浣犲ソ"銆係TR_SIZE鏄鐣欑殑杞崲鍐呭瓨絀洪棿銆備負浠涔堜笉鐢ㄥ姩鎬佸瓨鍌ㄥ憿錛熷洜涓烘垜璇曡繃錛屾湁閿欒錛屽彲鑳芥槸iconv鑷韓鐨勯檺鍒躲俿rc鏄疌椋庢牸鐨勬簮瀛楃涓詫紝dst鏄漿鎹㈠悗鐨剈nsigned char鏁扮粍銆俰n鍜宱ut鏄敤浜巌nconv鐨勫弬鏁般?br>
    //GB2312 to UCS-2 (Unicode)
    iconv_t cd;
    cd 
= iconv_open("UCS-2""GB2312");
    
if ((iconv_t)-1 == cd){
        
return -1;
    }
    iconv(cd, (
const char**)&in&src_len, (char**)&out&dst_len);
    iconv_close(cd); 
榪欎竴孌墊槸緙栫爜鐨勮漿鎹紝璇︾粏鍐呭璇鋒煡闃卛conv鐨刣oc銆?br>
    //Unicode dst
    std::cout << "dst: ";
    
int unicode_len = strlen((char*)dst);
    
for (int i = 0; i < unicode_len; i++) {
        showHex(dst[i]);
    }
    std::cout 
<< std::endl;

    
return 0;
}

void showHex(int x)
{
    
using namespace std;
    cout 
<< hex;
    cout 
<< "0x" << setw(4<< setfill('0'<< x << " ";
    cout 
<< dec;
}
鏈鍚庝竴閮ㄥ垎鏄樉紺鴻漿鎹㈠悗浠g爜銆傚寘鎷嚱鏁皊howHex()銆?br>
3.3錛歩conv鐨勯棶棰樸?br>
        鎴戜滑浼間箮宸茬粡瑙e喅闂浜嗐備絾鏄湁涓涓棶棰樻槸錛岃繖鏍瘋漿鎹㈢殑緙栫爜鏄?浣嶇殑錛屽嵆unsigned char錛岃孲DL闇瑕佺殑鏄?6浣嶇殑錛屽嵆Uint16錛涚浜屼釜闂鏄紝鎴戣浜嗭紝榪欐槸綰腑鏂囷紝浣犺瘯璇曞湪“浣?#8221;鍜?#8220;濂?#8221;涔嬮棿鍔犳鑻辮鏄粈涔堟晥鏋滐紵緇撹鏄紝杞崲涓嶈兘姝e父榪涜錛屽湪閬囧埌絎竴涓潪姹夊瓧鐨勬椂鍊欙紝灝辯粓姝簡銆?br>        闂榪樻槸娌¤В鍐籌紝鐮旂┒榪樺緱緇х畫銆?

lf426 2008-03-30 12:45 鍙戣〃璇勮
]]>
SDL鍏ラ棬鏁欑▼錛堝崄錛夛細1銆佸璇█鏀寔錛學in32涓嬬殑GetTexthttp://www.shnenglu.com/lf426/archive/2008/03/30/45723.htmllf426lf426Sat, 29 Mar 2008 18:02:00 GMThttp://www.shnenglu.com/lf426/archive/2008/03/30/45723.htmlhttp://www.shnenglu.com/lf426/comments/45723.htmlhttp://www.shnenglu.com/lf426/archive/2008/03/30/45723.html#Feedback0http://www.shnenglu.com/lf426/comments/commentRss/45723.htmlhttp://www.shnenglu.com/lf426/services/trackbacks/45723.html浣滆咃細榫欓

        鑷粠寮濮嬬爺絀禨DL鐨勬枃鏈樉紺猴紝鎴戝氨涓鐩村湪鎬濊冨湪SDL涓樉紺轟腑鏂囩殑闂銆傛垜浠煡閬?a title=闊﹁涔嬫垬 >闊﹁涔嬫垬錛?a title="Battle for Wesnoth" >Battle for Wesnoth錛変嬌鐢⊿DL寮鍙戠殑錛屽茍涓旀敮鎸佸璇█銆傛墍浠ワ紝鎴戜竴鐩寸浉淇esnoth鐨勬簮浠g爜閲岄潰涓瀹氭湁鎴戞墍闇瑕佺殑絳旀銆傜綉緇滀笂鏄旱璇寸悍綰晩錛屾湁浜涗漢騫茶剢璇達紝SDL涓嶆敮鎸佷腑鏂囷紱鏈変簺浜哄湪鍥伴毦闈㈠墠鍥炲埌浜哅FC鐨勬鎶便傝岋紝鏃㈢劧鎴戠殑鐩爣鏄法騫沖彴錛屽茍涓旀垜涔熺浉淇′竴瀹氳兘鎵懼埌絳旀錛屾墍浠ワ紝鎴戝潥鎸佸鎵俱傜粓浜庯紝瀹岀編瑙e喅浜嗗湪SDL涓樉紺轟腑鏂囷紝鐢氳嚦澶氳璦鐨勯棶棰樸備互涓嬬殑鍑犺妭錛屾垜灝嗗叏闈紝璇︾粏鐨勮鏄庤繖浜涙柟娉曘?br>
1.1錛歱o錛宮o涓巊ettext

        綰跨儲浠嶹esnoth鐨勫彂甯冩父鎴忎笌婧愪唬鐮佷腑寮濮嬶紝鎴戜滑鐭ラ亾錛屽湪Wesnoth娓告垙涓紝鏈変釜鍚嶄負po鐨勬枃浠跺す錛屽鍥借璦緲昏瘧閮芥斁鍦ㄤ簡榪欎釜鏂囦歡澶逛笅闈€傛父鎴忕▼搴忎腑澶氫負*.mo鏂囦歡錛屾簮浠g爜涓涓?.po鏂囦歡銆傞氳繃鎼滅儲錛宲o涓巑o鐨勮儗鏅誕鍑烘按闈⑩斺斿畠浠潵鑷狦NU欏圭洰gettext銆?br>        gettext欏圭洰鏄笓闂ㄤ負澶氳璦璁捐鐨勩傛垜浠笉闇瑕佷慨鏀規簮浠g爜鍜岀▼搴忕殑鎯呭喌涓嬶紝鍙互璁╃▼搴忔敮鎸佸鍥借璦銆傜▼搴忓皢鏍規嵁緋葷粺鎵鍦ㄧ殑鍥藉鍜屽尯鍩熼夋嫨鐩稿簲鐨勮璦錛屽綋鐒訛紝涔熷彲浠ュ湪鎵ц榪囩▼涓鐜╁鑷敱鐨勯夋嫨銆傛棦鐒舵槸寮鏀炬簮浠g爜鐨勶紝鑷劧涔熷緢瀹規槗鐨勮縐繪鍒皐in32涓嬨倃in32涓嬬殑榪欎釜欏圭洰涓婚〉濡備笅錛?br>http://gnuwin32.sourceforge.net/packages/gettext.htm
        涓轟簡鏂逛究鐨勪嬌鐢紝鎴戣繕鏄緩璁綘涓嬭澆瀹屾暣鐨勫畨瑁呭寘錛圕omplete package錛夈傜劧鍚庯紝浣犲彲浠ョ湅鑻辨枃璇存槑錛屼篃鍙互鍑潃鐩磋鍘昏瘯楠岋紝鎵懼埌鍝簺搴撳拰鍝簺DLL鏂囦歡鏄紪璇戝拰榪愯鏃跺繀欏葷殑鈥斺斿綋鐒訛紝鎴戜篃鍙互鐩存帴鍛婅瘔浣犵瓟妗堛?br>        璁劇疆緙栬瘧鐜鐨勯棶棰樺氨涓嶅啀澶氳浜嗭紝涓嶆竻妤氱殑璇風湅鍓嶉潰鐨勭珷鑺傘傚弽姝i兘涓夐儴鍒嗭細*.h鏂囦歡錛?.lib鏂囦歡鍜?.dll鏂囦歡錛屾斁鍒扮浉搴旂殑鏂囦歡澶逛笅闈㈠茍鍦ㄧ紪璇戞椂鍊欐寚鏄庡氨鍙互浜嗐?br>        鎴戜滑涓嬮潰灝嗙敤鍒扮殑鏂囦歡鏈夛細
libintl.h錛氳鍦ㄥ啓婧愪唬鐮佺殑鏃跺?include榪涙潵錛?br>libintl.lib錛氳繖鏄紪璇戞椂鍊欓渶瑕佺殑搴撴枃浠訛紱
libintl3.dll鍜宭ibiconv2.dll錛氳繖鏄▼搴忚繍琛屾椂鍊欓渶瑕佺殑鏂囦歡錛屾斁鍒?.exe鏂囦歡鍙互鎵懼埌鐨勫湴鏂廣?br>
1.2錛氭紨紺虹▼搴忎互鍙婅鏄?/p>
#include <iostream>
#include 
<string>
#include 
<clocale>
#include 
"GNU/libintl.h"

int main(int argc, char* argv[])
{
    setlocale(LC_ALL, 
"");
    bindtextdomain(
"myText""E:/My Documents/Visual Studio 2008/po");
    textdomain(
"myText");
    std::
string test = gettext("Hello, World!");
    std::cout 
<< test << std::endl;
    
return 0;
}
        鎴戜滑鍏堣#include榪涙潵鐨?lt;clocale>錛屾垜鐢?#8220;<>”琛ㄧず瀹冩槸鏍囧噯C++鐨勪竴閮ㄥ垎銆傚畠鍖呭惈浜嗗嚱鏁皊etlocale()銆傝繖涓嚱鏁板湪榪欓噷鐨勪袱涓弬鏁扳斺斿父閲廘C_ALL涓庣┖瀛楃涓?"鐨勬剰鎬濇槸錛屽湪榪欎釜紼嬪簭涓殑鎵鏈夎璦涓庡尯鍩燂紝閮借緗負緋葷粺榛樿鐨勮璦涓庡尯鍩熴?br>        libintl.h鏄垜浠垰鎵嶅姞鍏ョ殑GNU鐨勪竴閮ㄥ垎錛岃繖鎰忓懗鐫鍦↙inux緋葷粺涓嬶紝榪欎釜澶存枃浠舵槸緋葷粺鏈韓鑷甫鐨勩傚畠鍖呭惈浜嗗悗闈笁涓嚱鏁幫細bindtextdomain()灝嗕竴涓枃浠跺す鐩綍緇戝畾鍒頒竴涓煙鍚嶄笂錛岃繖涓煙鍚嶄篃鏄皢鏉?.mo鏂囦歡鐨勬枃浠跺悕錛泃extdomain()琛ㄦ槑鎴戜滑灝嗕嬌鐢ㄧ殑鍩熷悕錛沢ettext()涓殑瀛楃涓插皢鏄澶氳璦緲昏瘧鏇挎崲鐨勯儴鍒嗐?br>        灝嗚繖涓▼搴忕紪璇戯紝鍦ㄦ病鏈夊璇█鍖呯殑鏃跺欙紝紼嬪簭涔熻兘姝e父鐨勮繍琛岋紝鏄劇ず“Hello, World!”銆?br>
1.3錛氫負婧愮▼搴忓埗浣減o鏂囦歡鍜宮o鏂囦歡

        濡傛灉浣犲凡緇忓畨瑁呬簡瀹屾暣鐨勫畨瑁呭寘錛屾壘鍒扮浉鍏蟲枃浠跺す鐨刡in鐩綍錛岃繖閲屾湁寰堝宸ュ叿杞歡銆備綘鍙互閫氳繃cmd鐨勬柟寮忎竴姝ユ鐨勮漿鎹紝涔熷彲浠ワ紝鍋風偣鍎挎噿錛屽洜涓烘湁鏇村姞鐜版垚鐨勫伐鍏峰彲浠ョ敤銆備絾鏄紝絎竴姝ワ紝浠庢簮浠g爜鎻愬彇gettext()鐨勬枃鏈紝榪樺緱闈犲懡浠わ細xgettext銆傚氨璺熺敤g++鍛戒護涓鏍鳳紝鍋囪鎴戜滑鐨勬簮鏂囦歡鍚嶆槸main.cpp錛屾垜浠妸瀹冨厛杞崲鎴愪竴涓ā鏉挎枃浠禷.pot錛?br>
xgettext -o a.pot main.cpp
        浣犲彲浠ョ敤vim涔嬬被鐨勬枃鏈紪杈戝櫒鐪嬬湅*.pot鏂囦歡鐨勫唴瀹癸紝浣犱細鍙戠幇錛屼竴浜涜鏄庯紝浠ュ強鎻愬彇鏂囨湰鐨勮緇嗕俊鎭綰綍浜嗕笅鏉ャ?br>
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE
'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR 
<EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid 
""
msgstr 
""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-03-30 00:24+0800\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"

#: main.cpp:
11
msgid 
"Hello, World!"
msgstr 
""
涓嬮潰錛屾垜浠嬌鐢ㄤ竴涓畝鍗曠殑灝忓伐鍏穚oedit銆傚張涓涓法騫沖彴鐨勮蔣浠訛紝涓婚〉鍦細
http://www.poedit.net/
瀹夎榪愯鍚庯紝閫夋嫨“浠嶱OT鏂囦歡鏇存柊綾葷洰”錛岀劧鍚庢墦寮鎴戜滑鍒氭墠鐨刟.pot錛屼粈涔堥兘涓嶇敤淇敼錛堝綋鐒訛紝浣犱篃鍙互鎶婅嚜宸變俊鎭兘鍐欎笂鍘伙級錛岀‘淇?#8220;瀛楃闆?#8221;鏄疷TF-8灝卞彲浠ヤ簡銆傜劧鍚庯紝鍦ㄨ嫳璇笅闈篃涓婃浛鎹㈢殑鏂囧瓧鍚э紝淇濆瓨鐨勬椂鍊欙紝鐩稿簲鐨刴o鏂囦歡涔熷氨寤虹珛璧鋒潵浜嗐?br>
msgid ""
msgstr 
""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2008-03-30 00:24+0800\n"
"PO-Revision-Date: 2008-03-30 00:25+0800\n"
"Last-Translator: lf426 <zbln426@163.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

#: main.cpp:
11
msgid 
"Hello, World!"
msgstr 
"嫻滆尙鍩嶉惃鍕瑯閻e矉绱濋幋鎴炴降嫻滃棴绱?/span>"
榪欐槸po鏂囦歡銆傛庝箞鏄貢鐮侊紵閭f槸鍥犱負windows涓嶆槸鐢║TF-8淇濆瓨鐨勬枃鏈枃浠訛紙榛樿涓鑸槸GB2312錛夈傜敤poedit鎵撳紑鏃跺欐槸姝g‘鏄劇ず鐨勩傛垜鐨勬枃鏈唴瀹規槸錛?#8220;浜茬埍鐨勪笘鐣岋紝鎴戞潵浜嗭紒”銆?br>濡傛灉浣犵敤鐨勬槸vim錛屽彲浠ラ氳繃璁劇疆鐜鍙橀噺瑙e喅鏄劇ず涔辯爜鐨勯棶棰橈紝鍦╛vimrc鏂囦歡涓坊鍔犺繖涓鍙ワ細
set fileencodings=gb2312,ucs-bom,utf-8,chinese


1.4錛氳緗甿o鏂囦歡鐨勭洰褰?br>
        涓嬮潰鐨勫伐浣滃彲鑳藉氨鏈変簺鏁欐潯浜嗐傝繕璁板緱鎴戜滑緇戝畾鍩熷悕鐨勮礬寰勫惂錛屾垜鐢ㄧ殑鏄?br>E:\My Documents\Visual Studio 2008\po
錛堣娉ㄦ剰鍦–++紼嬪簭閲岄潰鎶婃枩鏉犲弽榪囨潵錛侊級
*.mo鏂囦歡騫朵笉鏄洿鎺ユ斁鍒拌繖涓礬寰勪笅錛岃屾槸榪欎釜璺緞涓嬬殑./LL/LC_MESSAGES鎴栬?/LL_CC/LC_MESSAGES銆傚叾涓璍L琛ㄧず璇錛孋C琛ㄧず鍥藉鎴栧尯鍩熴傚叿浣撶殑璇峰弬鑰僕esnoth銆傚氨鎴戜滑鐨勪腑鏂囨潵璇達紝榪欎釜渚嬪瓙鏀緈o鏂囦歡鐨勮礬寰勬槸錛?br>E:\My Documents\Visual Studio 2008\po\zh_CN\LC_MESSAGES
        鐜板湪榪愯紼嬪簭灝卞彲浠ョ湅鍒版枃鏈凡緇忚鏇挎崲浜嗐傚鏋滄垜浠垹闄o鏂囦歡鎴栦慨鏀筸o鏂囦歡鍚嶏紙涓庣粦瀹氬煙鍚嶄笉涓鑷達級錛岀▼搴忎細緇х畫鏄劇ず鍘熸潵鐨勮嫳鏂囥傚鏋滄垜浠敼鍙樼郴緇熺幆澧冿紝鍙涓嶆槸涓浗涓枃錛岀▼搴忛兘榪樻槸鏄劇ず鑻辨枃銆傚鏋滄垜浠鏇存柊鏇挎崲鍐呭錛岀洿鎺ョ敤poedit鏇存柊po鍜宮o鏂囦歡灝卞彲浠ヤ簡銆?br> 
1.5錛氭瀯寤篠tringData綾?br>
        鎴戜滑甯屾湜瀛楃涓茬殑鏁版嵁鍗曠嫭鐨勪繚瀛樺湪涓涓枃浠墮噷錛岃繖鏍鋒棦鏂逛究琚玤ettext鎻愬彇錛屼篃鏂逛究淇敼銆傝屼笖錛屽湪紼嬪簭閲岄潰錛屾垜浠敖閲忔妸gettext娑夊強鍒扮殑涓浜涚壒孌婄殑璁劇疆闅愯棌浜嗐傛墍浠ワ紝鎴戜滑鏋勫緩StringDada綾伙紝鍦ㄧ▼搴忎腑闇瑕佺敤鍒扮殑鍦版柟錛岀洿鎺ヨ皟鐢ㄥ畠鐨勫璞″氨鍙互浜嗐?br>
//FileName: string_data.h
#ifndef STRING_DATA_H
#define STRING_DATA_H

#include 
<clocale>
#include 
<string>
#include 
<vector>
#include 
"GNU/libintl.h"

class StringData
{
private:
    std::vector
<std::string> data;
public:
    StringData();
    std::
string operator [](const unsigned int& n) const;
};

#endif
鎴戦噸杞戒簡[]錛岃繖鏍峰湪璋冪敤鏁版嵁鐨勬椂鍊欐洿鍔犵洿瑙傘傛垜浠皢鏁版嵁閮藉啓鍦⊿tringData鐨勬瀯閫犲嚱鏁頒腑錛屽皢鏉ettext涔熷彧闇瑕佹彁鍙朣tringData鐨勫疄鐜版枃浠跺氨鍙互浜嗐?br>
#include "string_data.h"

StringData::StringData()
{
    setlocale(LC_ALL, 
"");
    bindtextdomain(
"StringData""./po");
    textdomain(
"StringData");

    
//0
    data.push_back(gettext("Up was pressed."));
    
//1
    data.push_back(gettext("Down was pressed."));
    
//2
    data.push_back(gettext("Left was pressed."));
    
//3
    data.push_back(gettext("Right was pressed."));
    
//4
    data.push_back(gettext("Other key was pressed."));
}

std::
string StringData::operator [](const unsigned int& n) const
{
    
if ( n >= data.size() )
        return 0;

    
return data[n];
}


1.6錛氬仛涓猤ettext鐨勬壒澶勭悊

        濡傛灉浣犳寜鐓ф垜鍏ㄩ潰浠嬬粛鐨勶紝瀹夎浜哖oedit錛屼篃瀹夎浜咷nuWin32錛岄偅涔堬紝鎴戜滑鍋氫釜鎵瑰鐞嗘枃浠惰浠巗tring_data.cpp鍒癝tringData.mo鐨勮漿鎹㈡洿鍔犵畝鍗曞惂銆傦紙濡傛灉瀹夎璺緞涓嶄竴鏍瘋鍋氱浉搴旂殑淇敼錛夈?/p>

@set path=C:\Program Files\GnuWin32\bin;%PATH%;
xgettext 
--force-po -o string_data.pot string_data.cpp
msginit 
-l zh_CN -o StringData.po -i string_data.pot
@set path
=C:\Program Files\Poedit\bin;%PATH%
poedit StringData.po
del string_data.pot
del StringData.po
Poedit鎵撳紑StringData.po鐨勬椂鍊欎細鎶ラ敊錛岄偅鏄洜涓烘枃浠舵寚鏄庣殑緙栫爜涓嶅彲鐢紝璇峰湪“瀛楃闆?#8221;涓夋嫨UTF-8錛屽彟澶栵紝鍦?#8220;宸ョ▼鍚嶇О浠ュ強鐗堟湰”涓啓鐐逛俊鎭紝涓嶈浣跨敤榛樿鍊煎氨鍙互浜嗐傜劧鍚庣炕璇戝茍淇濆瓨錛孲tringData.mo鏂囦歡灝辯敓鎴愪簡銆?

lf426 2008-03-30 02:02 鍙戣〃璇勮
]]>
久久久99精品成人片中文字幕| 中文字幕人妻色偷偷久久| 久久免费精品视频| 久久亚洲AV无码西西人体| 久久精品国产AV一区二区三区| 国产情侣久久久久aⅴ免费| 久久综合狠狠综合久久激情 | 久久青草国产手机看片福利盒子| 99久久精品国产综合一区| 亚洲色欲久久久久综合网| 久久er国产精品免费观看2| 国产精品久久久久久久久软件| 久久99久久99精品免视看动漫| 久久99精品久久久久久野外 | 亚洲国产成人久久一区WWW| 人妻无码中文久久久久专区| 久久精品国产只有精品66| 国产亚洲欧美成人久久片| 国产精品亚洲综合久久| 伊人色综合久久天天| 久久综合狠狠综合久久| 国产欧美久久久精品影院| 久久久久噜噜噜亚洲熟女综合| 久久精品一区二区国产| 欧洲精品久久久av无码电影| 亚洲国产日韩欧美久久| 久久精品国产一区二区三区不卡| 狠狠色丁香久久综合五月| 91精品国产色综合久久| 嫩草伊人久久精品少妇AV| 久久婷婷五月综合97色直播| 人妻无码久久精品| 日日狠狠久久偷偷色综合免费| 久久综合丁香激情久久| 狠狠狠色丁香婷婷综合久久俺| 久久精品国产清自在天天线 | 久久99国产精品久久久| 久久精品国产亚洲一区二区| 69SEX久久精品国产麻豆| 久久国产精品99久久久久久老狼 | 国产香蕉久久精品综合网|