スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Eclipse] Eclipseで日本語入りのJavaソースコードが文字化けする場合の対処方法

EclipseでAndroidアプリを開発していて、Javaのソースコードが頻繁に文字化けしてしまうことがあった。
日本語の文字列リテラルやコメントが文字化けしてしまうのだ。
(ただし私の開発環境は Mac OSX + Eclipse なので、Windows版ではどうなのか不明だ)

ググってみたところ、IDEの設定で文字コードを変更せよ、などという情報しか見つからなかったが、
そういうことが原因ではなさそうなのだ。

このような場合は、文字コードを指定して保存可能なテキストエディターで保存しなおすと良い。
例えばMkEditor(Windows用のツールだけども)での手順は以下のとおり。
1) MkEditorで文字化けしたファイルを開く。
 この時、Eclipseで文字化けしていたファイルが、MkEditorでは正しく表示されているはずだ。
2) 「ファイル」「名前を付けて保存」メニューを選択。
3) ファイル指定ダイアログの下部の「文字コードと改行コード」欄で、UTF-8(BOMあり)を選択する。
 その右の「改行=」の欄は「改行=自動」か、「改行=LF」を選ぶ。
4) ファイルを保存する。

このファイルをEclipseで開けば、文字化けは解消されているはず。

ということは、文字化けの原因は、いつのまにかBOMが無くなってしまっていたということか。


----- 2011/11/22 追記 -----
上記は嘘。
Eclipseの設定画面左側のペインで[General]--[Workspace]を選び、右側ペインの下の方に
"Text file encoding" という設定が、ちゃんと存在するではないか!!
この設定を [Default(MacRoman)] から [Other]の"UTF-8"にすれば良いだけだ!!

なんということでしょう。
今までずいぶん時間を無駄にしてしまった...orz
スポンサーサイト

Visual C++ 2008 プログラムを常に管理者権限で実行するように設定する

Visual C++ 2005 で作ったアプリケーションを、Windows 7 上で
常に管理者権限で実行させるためには、権限昇格用のマニフェスト
ファイルを独自に用意する必要があった。

ところが、Visual C++ 2008 では、プロジェクトの設定で簡単に
管理者として実行するプログラムをビルドすることができる。

1. メニュー[プロジェクト]---[プロパティ]を選ぶ。
2. プロパティ画面左側ツリーで、
  [構成プロパティ]---[リンカ]---[マニフェストファイル]
 を選択する。
3. 画面右側の [UACの実行レベル] を [requireAdministrator] に変更する。

これだけで、出来上がったプログラムは常に管理者権限で実行されるようになる。

#Region - #End Region までを一括展開するマクロ

他人の書いたVB.NETのソースコードとかを見ている時、#Region - #End Region までをまとめて展開したいと思ったのだが、ひとつひとつ手作業で展開していくしか方法がないようだ。

参考:
http://social.msdn.microsoft.com/forums/ja-JP/vsgeneralja/thread/63ecfab4-ff37-4459-8864-628520f3b650/

なんということだ!!

しかたがないので、上記サイトで紹介されていたマクロを参考に、#Region - #End Region までを一括して展開するVisual Studioのマクロを作った。
Visual Studio 2005 で動作確認した。




Public Module Module1

'''
''' #Region の一括展開マクロ
'''

Sub RegionsAllExpand()

' 非表示の文字列も検索可
DTE.Find.MatchInHiddenText = True
' 検索する文字列
DTE.Find.FindWhat = "#Region"
DTE.Find.Action = vsFindAction.vsFindActionFind
DTE.Find.Target = vsFindTarget.vsFindTargetCurrentDocument

' 検索実行
Dim result As vsFindResult = DTE.Find.Execute()
If result = vsFindResult.vsFindResultNotFound Then
' 検索文字列がひとつもない場合は即終了
Exit Sub
End If

' 検索実行時に、ドキュメント末尾まで行ってこれ以上検索文字がないという
' ことを簡単に検知する方法が見つからなかった。
' そこで、最初に見つかった位置を記録しておき、それ以降の検索続行時に
' 元の場所まで戻ってきてしまったかどうか、という基準で検索終了を
' 判断している。

' 最初に見つかった文字列の位置を記録しておく
Dim posBegin As Integer = DTE.ActiveDocument.Selection.ActivePoint.AbsoluteCharOffset

While True
result = DTE.Find.Execute()
Dim posCur As Integer = DTE.ActiveDocument.Selection.ActivePoint.AbsoluteCharOffset
If posCur = posBegin Then
' 最初に見つかった文字列まで戻ってきてしまったので、終了
Exit While
End If
End While

End Sub
End Module




で、このマクロをVisualStudioに登録する方法はこちら。
http://support.microsoft.com/kb/317347/ja


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。