※開発環境は、Windows2000sp4/IE6sp1/VC++6.0sp6/ATL3.0/WTL7.0
ちょっとShiftJISコードの文字列をUTF-8コードに変換しようと思って調べたのですが、MSDNを見てもよく分からないし、 Webで検索してみても、Unicode への変換のサンプルコードはあるものの、ShiftJISからUTF-8への変換方法について詳しいものが見つかりませんでした。 独自のコードやANSI固定環境用のコードはありましたが、汎用性のあるサンプルコードを見つけることができませんでした。
そこで、覚書です。LPCTSTR のShiftJIS文字列を LPTSTR のUTF-8にエンコードするコードです。
一般的な教科書的コードと、MSDNとWTL7.0のソースを参考にして作った高能率のコードを記載しておきます。
ちなみにDonutでは後者のコードを使用しています。
|
|
上記の方法では、下記の理由により、速度が遅くなったり煩雑になります。
newでメモリをヒープに確保している(* 実装依存ですが、筆者の環境では、malloc()でメモリ管理されていました。)
そこで、下記の方法によって高速化します。また、USES_CONVERSION を使うことによって さらに楽ができます。
_alloca()でメモリをスタックに確保 → 高速かつ確保したメモリはブロックを抜けると自動的に解放
|
|
2005/02/18
コード1:率直なコード
で、malloc(), free()と書いていたものをC++らしく、new, delete に書き換えた。
使用例としてサンプルコードを追加。← 標準出力に出力しているけど、文字化けして読めないでしょう。ま、サンプルっつーことで。