[Delphi:90290] Delphi2007のTLabelの文字化け

673 views
Skip to first unread message

Hideaki Ochi

unread,
Feb 17, 2008, 11:08:13 PM2/17/08
to Delphi-ML
いつもお世話になっております。
越智です。

ご存知のかた、いらっしゃいましたらお願い致します。


 やっとうまくDelphi2007とC++Builderの両方が導入でき、テスト的に
使用しています。Delphi2007でたまたま TLabelに日本語の文字を入力し
ましたら文字化けしました。ただしオブジェクトインスペクタのCaption
には正しく日本語が表示され、文字化けはフォーム上だけです。

 ただし、Fontプロパティの「charaset」を「ANSI_CHARSET」から
「DEFAULT_CHARSET」に変更すればフォーム上も正しく日本語で表示され
ます。 これを無条件「DEFAULT_CHARSET」にしておくということは可能
なのでしょうか? ちなみにDelphi2005の場合ははじめから「SHIFTJIS_CHARSET」
にセットされているようです。

 なお、環境はWindows XP(SP2) でDelphi2007+C++Builder2007 で
「CodeGear RAD Studio 2007 December Update」まで終わっています。


 よろしくお願いします。

---------------------------
越智英昭 a02...@gmail.com
---------------------------


ht_...@nifty.com

unread,
Feb 18, 2008, 5:09:39 AM2/18/08
to Del...@ml.users.gr.jp
こんにちは。

> ご存知のかた、いらっしゃいましたらお願い致します。
リポジトリを使って回避するしかないかもしれません。

[(Unofficial tips) フォームのデフォルトフォントとリポジトリ]
(CodeGear日本語ニュースグループディレクトリ)
http://newsgroups.borland.com/cgi-bin/dnewsweb?cmd=article&group=borland.public.delphi.japanese&item=306&utag=

にて、詳しい手順を記述してあります。


--
by DEKO
-------------------------------------
http://homepage1.nifty.com/ht_deko/
ht_...@nifty.com
-------------------------------------

Hideaki Ochi

unread,
Feb 19, 2008, 4:08:16 AM2/19/08
to Del...@ml.users.gr.jp
情報ありがとうございます。

On Mon, 18 Feb 2008 19:09:39 +0900
ht_...@nifty.com wrote:


> [(Unofficial tips) フォームのデフォルトフォントとリポジトリ]
> (CodeGear日本語ニュースグループディレクトリ)
> http://newsgroups.borland.com/cgi-bin/dnewsweb?cmd=article&group=borland.public.delphi.japanese&item=306&utag=
>
> にて、詳しい手順を記述してあります。

 今までリポジトリを使ったことがないのですぐには理解できませんで
したが、もう一度見直してみます。ありがとうございました。

 ただ今回はTLabelだけだったのですが、教えていただいたページを見
ると他にもなにかありそうな感じですね。 当面はDelphi2007を使うと
きはFontのcharsetをきちっと設定します。

---------------------------
越智英昭 a02...@gmail.com
---------------------------


ht_...@nifty.com

unread,
Feb 19, 2008, 11:43:57 PM2/19/08
to Del...@ml.users.gr.jp
こんにちは。

>  ただ今回はTLabelだけだったのですが、教えていただいたページを見
> ると他にもなにかありそうな感じですね。 当面はDelphi2007を使うと
> きはFontのcharsetをきちっと設定します。

そうですね。TLabelはデフォルトで"ParentFont=True"なので、
最初にフォームのフォント名と文字コードセットを正しく設定しておけば、
TLabelの文字化けは、まず防げます(新規作成のアプリケーションの場合)。

ただ...一見正しく日本語が表示されているように見える他のコントロールでも、
フォント名と文字コードセットが欧文になっている場合には、
アプリケーションをWin9xで実行すると文字化けする事があります。

KylixだとApplication変数にFontプロパティがあったので、
プロジェクトファイルに
Application.Font.Name := ~;
Application.Font.Charset := ~;
のような記述をすれば簡単に回避できたのですが...。

tknak...@brain-tokyo.jp

unread,
Feb 20, 2008, 11:07:07 PM2/20/08
to Del...@ml.users.gr.jp
中村@ブレーンです。

Quoting ht_...@nifty.com:

> ただ...一見正しく日本語が表示されているように見える他のコントロールでも、
> フォント名と文字コードセットが欧文になっている場合には、
> アプリケーションをWin9xで実行すると文字化けする事があります。
>

あれ、そうでしたっけ。

私の認識だと
CharSetがDEFAULT_CHARSET以外になっている⇒CharSetに従う。
CharSet=DEFAULT_CHARSET ⇒ NT系 Windows のデフォルトキャラセット
              9X系 フォントのデフォルトキャラセット

なので NT系で CharaSet = DEFAULT_CHARSETの場合は日本語が表示されるが
非日本語設定のNTや98系では化けることがある。
⇒DEFAULT_CHARSETは避けるべき

ということだったと思います。

----------
(株)ブレーン 中村拓男

ht_...@nifty.com

unread,
Feb 21, 2008, 3:25:27 AM2/21/08
to Del...@ml.users.gr.jp
こんにちは。

> なので NT系で CharaSet = DEFAULT_CHARSETの場合は日本語が表示されるが
> 非日本語設定のNTや98系では化けることがある。

誤:フォント名と文字コードセットが欧文になっている場合には、
正:フォントの文字コードセットが日本語になっていない場合には、
が語弊がなくていいですね。

# オブジェクトインスペクタにてFontプロパティにある
# […]を押下してフォントダイアログを出すと、
# DEFAULT_CHARSETは「文字コード:欧文」として表示されます。
# 私が言っていたのはコレの事でした。

いずれにせよ、
> ⇒DEFAULT_CHARSETは避けるべき
これは私も同一認識ですよ。

Reply all
Reply to author
Forward
0 new messages