« WILLCOM 03 用の自作ソフトを作ろう! #10 VGAモードに切り替えろ! | メイン | firefoxのWindowsMobile版Fennec登場間近 »

November 18, 2008

WILLCOM 03 用の自作ソフトを作ろう! #11 日本語ファイル名問題解決か?

WILLCOM 03 用の自作ソフトを作ろう! #11 日本語ファイル名問題解決か?

しばらく、本腰入れてデータを追いかけてみました。
アプローチとして、返ってきたSearchRec.NameはSysToUTF8で変換できているというところからチェックしてみました。
で、Ansiってコード的には何が入ってきてるのか?という疑問が。
ずっとWinCEは内部的にunicodeだからansiってUTF-16かEUCかなんかで入ってるんだろうなぁと、漠然と決めつけてたので、まずここからチェックしてみようとSysToUTF8変換前のSearchRec.Nameを覗いてみると…あ、Shift-JISだ…

まるっきりの予想外(^^;

で、ためしにFindFirstのPathにShift-JISで日本語フォルダ名を与えてみると、見事に一覧取得に成功(^^) お悩み解決!!

でも、findFirstUTF8の内部で使っているUTF8ToSys(もしくはその内部で使われているUTF8ToAnsi)では、正常にShift-JISに変換されて出てきていない。

ansiってなんかコードページの設定をして切り替えたりするのか?そのせいでUTF8ToAnsiのほうが変換がおかしいのかと考えてはみたものの、それだとAnsiToUTF8も失敗しそうだけどこちらは成功してる…

えーい、こうなったら普通のFindFirst使って、Name使うときにSJisToUTF8でも作ってそれにかけて使うことしよう!

ということでwindowsAPIの中にWideCharToMultiByteと MultiByteToWideCharという簡単便利なコード変換関数があるのでこれであっさりした変換ルーチンを作りました。
(コード変換にこのAPI使うとポーティングが…と嫌う場合もありますが、もともとWindows mobile向けアプリ作成が前提なので問題なしです)

これでやっと、ファイル一覧を取得して、ファイルを選んで処理みたいなことができるようになります。

めでたしめでたし。
(ansiに関して根本的な理屈はわかってないのが気になりますが(^^;;)

とりあえず、シンプルなイメージビューアでも試作してみます。

投稿者 coboo : November 18, 2008 12:36 PM

トラックバック

このエントリーのトラックバックURL:
http://coboo.homeip.net/~coboo/mt/mt-tb.cgi/491

コメント

コメントしてください




保存しますか?