2015年2月24日火曜日
Unicode処理③::UTF16(Unicode)をUTF8に変換する。実装編
実際にC言語でコードを書いて見る。
実行結果
上の文字列は、UTF16でエスケープ表記されているサロゲートペアである
\uD842\uDF9F (Unicode値 : 0x20B9F)
を文字列として与え、それをUTF8のバイナリ(0xF0 A0 AE 9F)に変換した結果になります。
下の文字列は、UTF16でエスケープ表記された
あ : \u3042 : (Unicode値 : 0x3042)
を文字列として与え、それをUTF8のバイナリ(0xE3 81 82)に変換した結果になります。
関数の
in_ReadSize : 実際に読み込んだ文字列のサイズ(Byte)
out_WriteSize : 実際書き込んだ文字列のサイズ(Byte)
は、実際の実装においては大抵必要になるかと思いますが、
今回はサンプルの簡略化のため使用していません。
実行環境は x64windows7pro VisualStudio2012 上です。
また、関数の方は、この環境の上のVirtualBoxで走らせたCentOS7上でも動作を確認しました。
windowsのコマンドプロントは、デフォルトの文字コードがUTF8では無いので、
実行結果は16進数表記にしてあります。
また、
char str_in[]="\\uD842\\uDF9F";
のように \ を表現したい場合は、エスケープさせて '\\' としなければいけない事に注意してください。
Blogger上で表示する関係上、tabをspace8個に置換処理しています。
必要な方は、
http://ux.getuploader.com/ADMIS/download/65/4ByteStringTo2ByteBinary_Ver00.01_02.zip
からソースをダウンロードしてみて下さい。
最初 前回
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿