「[[マイクロソフト系技術情報 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開発]], [[:国際化対応]], [[:文字コード]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS