「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -[[戻る>文字コード]] * 目次 [#a40333c6] #contents *概要 [#wd98dbba] アプリケーションのUnicode対応 *GUI [#r3314023] GUIアプリケーションのUnicode対応 **非UnicodeアプリケーションとUnicodeアプリケーション [#q74f3771] 古いアプリケーションには、非Unicode対応のGUIアプリケーションが存在する。 -拡張文字セットを扱うにはアプリケーションのUnicode対応が必要である。 --非UnicodeアプリケーションではJIS2004の拡張文字セットだけでなく、Shift-JISにない文字は全て入力できない。 --但し、アプリの画面上で、明確に「?」表示になるので、予期せずJIS2004の拡張文字セットが入力されることもない。 -システムがUnicodeに統一されている場合は、エンコーディングされる箇所を意識する必要がある。 #ref(UnicodeSupport.png,left,nowrap,非UnicodeアプリケーションとUnicodeアプリケーション) **非Unicodeアプリケーション [#p9425578] -非Unicodeアプリケーションでは、Shift-JISにない文字の入力ができない(これは、IMEから、ウィンドウ プロシージャ経由でデータを正しく受け取れないため)。 -例えば、JIS2004で追加された拡張文字セット以外の、Shift-JISにない鱓(ごまめ) という文字を非Unicodeアプリケーションに入力して見ると、この文字も入力できないことが確認できる。 [参考]:CyberLibrarian(図書館員のコンピュータ基礎講座参考資料) > 参考資料JIS補助漢字(JIS X 0212)~ http://www.asahi-net.or.jp/~ax2s-kmtn/ref/jisx0212/jisx0212-4.html >・・・ 「鱓」は、JIS90(JIS X 0212)補正漢字 **Unicodeアプリケーション [#p5b4a4bc] アプリケーションのUnicode対応の方法 ***VB [#fdb689f4] -[HOWTO] Visual Basic のフォームでUNICODE 文字列の読み込みと表示を行う方法~ http://support.microsoft.com/kb/193540/ja ***VC++ [#c4f53f83] -アプリケーションのUnicode対応は = ウィンドウ(ウィンドウ プロシージャ、メッセージ ループ)のUnicode対応である。 --ウィンドウ(ウィンドウ プロシージャ、メッセージ ループ)をUnicode対応させるには、IsWindowUnicode 関数が True を返すウィンドウを作成する。 --また、IsWindowUnicode関数が True を返す場合でも、ウィンドウ プロシージャ、メッセージ ループで、メッセージを正しく処理する必要がある。 -ウィンドウ(ウィンドウ プロシージャ、メッセージ ループ)のUnicode対応には、以下が必要である。 --ウィンドウクラスの登録は、RegisterClassW 関数を使用する。 --ウィンドウの作成はCreateWindowExA、CreateWindowExW 関数のどちらでも良い。~ ただし、エディット コントロールなどのコモン コントロール類や、~ --ウィンドウの作成は ---CreateWindowExA、CreateWindowExW 関数のどちらでも良い。~ ---ただし、エディット コントロールなどのコモン コントロール類や、~ それをサブクラス化したウィンドウの場合は、CreateWindowExW関数を使わなければならない。 --ウィンドウ プロシージャでは DefWindowProcW 関数を使う。 --サブクラス化している場合は、CallWindowProcW 関数を使う。 --メッセージ ループでは、以下の関数を使用する。 ---GetMessageW ---DispatchMessageW ---TranslateAcceleratorW -フロント周りは、ほぼUnicode対応が済んでいる。 --メモ帳 --WWWブラウザなどのアプリケーション --Office(Word、Excel、Powerpoint) --開発環境の標準入力コントロール -[参考]:MSDNライブラリ --IsWindowUnicode~ http://msdn.microsoft.com/ja-jp/library/ms633529.aspx --RegisterClass~ http://msdn.microsoft.com/ja-jp/library/cc410975.aspx --CreateWindowExA~ http://msdn.microsoft.com/ja-jp/library/ms632680.aspx --DefWindowProc~ http://msdn.microsoft.com/ja-jp/library/ms633572.aspx --CallWindowProc~ http://msdn.microsoft.com/ja-jp/library/ms633571.aspx --GetMessage~ http://msdn.microsoft.com/ja-jp/library/cc364699.aspx --DispatchMessage~ http://msdn.microsoft.com/ja-jp/library/ms644934.aspx --TranslateAccelerator~ http://msdn.microsoft.com/ja-jp/library/cc364840.aspx *CUI [#q00beed0] **CMD [#s9675aab] FTPをコマンドで実行した所、文字化けしたという話がありましたが、~ コマンド・プロンプト(CMD)がSJISアプリケーションとして動作しているためです。 コマンド・プロンプト(CMD)は、 cmd /u その他コマンドライン引数 でUnicode対応します。 それ以外はSJISです(日本のロケールでは)~ #日本語以外では各国のロケールの既定の文字コード。 ↓のコマンドを /u 有り・無しで起動したコマンド・プロンプト(CMD)から実行テストすると解ります。 C:\Users\daisukenishino>echo 鱓 > aa.txt 鱓(ごまめ)は、Unicodeにしか無い文字。~ (UnicodeでおBOM無しで出力されるためサクラエディタなどから開いて下さい) **FTP [#j045cea6] FTPは、転送モード(asciiまたはbinary)があり、~ 転送モード:asciiでは、自動エンコーディングするので、 ***設定で回避 [#p30df944] 文字化けが発生する場合は、設定などで回避する必要がある。 -FFFTPで日本語ファイルが文字化けする場合の設定変更方法~ http://support.clara.jp/use/web/upload/ftp/ffftp_utf8off.htm -FileZilla Serverの設定方法~ http://www.aconus.com/~oyaji/ftp/filezilla_server_conf.htm -Windows エクスプローラーの FTP 機能を利用して日本語が含まれたファイルを~ FTP サイトへアップロードすると、ファイル名が文字化けする、~ もしくは FTP フォルダー エラー が発生する場合がある~ http://support.microsoft.com/kb/2416991/ja ***サーバ側でエンコード [#k9980941] エンコーディングの指定は無いようなので、~ ファイル名などの文字化けなどが発生した場合、~ convmv というコマンドを使用して変換するなどが必要になる。 -Linuxでファイル名の文字コードを変換する~ (文字化けを直す):while(1) { ;}:So-netブログ~ http://aoi-f.blog.so-net.ne.jp/2010-09-08-1 ---- Tags: [[:.NET開発]], [[:国際化対応]], [[:文字コード]]