Windows98SE上でActivePerl5.8.0使用です。
#Perlはここ数年愛用していますが、Tkは数日手をつけただけの初心者です
例えば、
print OUT "☆ Hi! ★\n" ; #☆★はUTF-8
のようにファイルにUTF-8コードで書き出すことは可能ですが、
Tkを用いてWindowにUTF-8コードの文字を表示させようとすると失敗します。
例えば、Windowのタイトルを
$top -> title('☆test1★') ; #☆★はUTF-8
とすると、表示は「笘・est1笘・」と文字化けしてしまいます。
Perl/Tkで作成したWindow上でUTF-8コードの文字を表示させる方法は無いでしょうか?
No.3ベストアンサー
- 回答日時:
こんにちは。
何だか気になるご質問だったのでお邪魔します。私は目下 Turbolinux 8 Workstation 上の Tcl/Tk 8.3 しか試せる環境にないので、
ひょっとしたらとんでもなく的外れなことを言ってるかもしれませんが、
ご笑覧ください。
ウィンドウのタイトルではなく、ラベルやテキストウィジェットではどうなのでしょう?
ウィンドウタイトル文字列は OS・GUI システム依存の最たるものですので、
他のウィジェットとは同列に扱えないと思います。
>よくよく考えると中国語版のWindowsやLinuxとかはその地域で標準のコードで書いて
>表示できるのかなぁ
これは当然できると思います。というより、できなければ困るでしょうね。
現に日本語化もされていますし、そうでなければアジアで Tcl/Tk を使う人も
いなかったでしょうから。
現在の Tcl/Tk は内部ですでにユニコードを使っています。
ユニコードフォントがなければもちろん文字化けしますが、
それでも Tcl 言語では UTF -8 も含めた各種エンコーディングの
相互変換をサポートしています。
日本語版 Linux の Tcl/Tk においても、ロカール(locale)を適切に設定したり
文字列のエンコードを変換してやれば中国語や韓国語の表示は可能です。
例えば、次のようにシェルスクリプトを書いてやれば、ラベルに韓国語が表示されます。
#!/bin/sh
# the next line restarts using wish \
LC_ALL=ko_KR.eucKR exec /usr/bin/wish8.3 "$0" "$@"
# wish の絶対パスは環境によって変わります
label .l -text "この部分は韓国語(EUC-KR)文字列"
pack .l
スクリプトの中から起動する wish に環境変数でロカールを与えてやるのがミソです。
Tcl の encoding コマンドでは韓国で一般的な ksc5601 や中国本土の gb1988、
台湾の big5 も扱えます。
また、文字列を UTF-8 エンコーディングで書いたならば以下のようになります。
#!/bin/sh
# the next line restarts using wish \
LC_ALL=korean.euc exec /usr/bin/wish8.3 "$0" "$@"
# なぜか ko_KR.eucKR ではダメでした
label .l -text [encoding convertfrom utf-8 "この部分は韓国語(UTF-8)文字列"]
pack .l
プラットフォームが Windows 上の Perl/Tk ということなので、そのままでは通じませんが
(というより、Windows98 にロカールってあったっけ?「地域のプロパティ」かな?)
考え方は同じでいいのではないでしょうか。
>中国語や韓国語を表示しようと思ったら、WindowsやUNIX系OSの環境からして、
>その言語用にセットアップしないと駄目そうなのですね
そのようですね。XP とかならいざ知らず、98SE ではユニコード対応も
いまいちでしょうから。
http://www.ctcs.jp/gongju/help/HowToUse.html
Perl の場合、特殊変数「$^O」に OS 名が入っていますので、
それによって分岐させてやればいいと思います。
外部のカタログファイルに言語ごとの翻訳文字列を収めておいて、
それを読み込ませるのもいいかもしれません。
現在の Perl の文字エンコーディング変換についてはほとんど知りませんので、
参考 URL をご覧ください。
参考URL:http://www.lr.pi.titech.ac.jp/~abekawa/perl/perl …
非常に詳細なご回答をいただき有難うございます。
>ウィンドウのタイトルではなく、ラベルやテキストウィジェットではどうなのでしょう?
これが駄目だったんです。。。
#というより、試した順としてはこちらが先でした。
WindowsXP環境も手に入れましたので、ちょっと、いただいた回答を参考に、地域と言語のオプション設定変更など、色々みます。
#仕事の都合上、すぐに試して結果を報告することができません。すみません。結果報告後、クローズ&ポイント発行させていただきますね。
No.2
- 回答日時:
んー?
よくよく考えると中国語版のWindowsやLinuxとかはその地域で標準のコードで書いて表示できるのかなぁ・・・と試したいけど持ってないので無理です。
化けるのがOS側の問題ならまだわかるんですが・・・。(ホントにOSの問題なのかは私は知らないです(ぇ))
No.1
- 回答日時:
私も試してみました。
するとUTF-8に限らずShift JIS以外では全部化けました。
調べてみたところ、どうやらWindowsならShift JIS、UNIXならEUCにしなければダメなようです。
今のところ、他のコードでの表示は不可能なようです。
ご回答頂き有り難うございます。
また、調べていただき恐縮です。
個々数日の付け焼き刃のせいか、検索しても上手く回答が見つけられずにいたので、非常に有り難いです。
しかし…。わちゃー…Shift-JISかEUCしか選択肢はないのですね…。
んー、ということは、中国語や韓国語を表示しようと思ったら、WindowsやUNIX系OSの環境からして、その言語用にセットアップしないと駄目そうなのですね。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Windows 8 メモ帳による文字コード変換 2 2022/09/01 18:38
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- その他(ソフトウェア) powershell で出力したテキストファイルをvim で開くと文字化け 2 2023/01/11 21:39
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- HTML・CSS <meta charset="utf-8"><!-- 文字化け防止ユニコード --> ?最近モバイル 1 2022/12/11 04:27
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パイソンエラーについて
-
関数chop
-
プログラミング HSPの変数につ...
-
perlを使用しての特定行抽出に...
-
GDBでデバッグするとき文字列の...
-
リストデータの検索でのエラー...
-
Perl(Windows)の文法について
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
VBA 置換文字がみつからない時
-
マクロを使ってフォルダー内に...
-
VBA EXCEL あるセルの中の一...
-
「何とかで始まり、何とかで終...
-
pythonエラー
-
データにカンマが入ったCSVデー...
-
全角入力
-
英数字のみ全角から半角に変換
-
word差し込み印刷 半角カタカ...
-
[VBA][Excel]クリップボードか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
パイソンエラーについて
-
Perlで Right関数に近い処理を...
-
Malformed UTF-8 character
-
Perl(Windows)の文法について
-
日本語文字列の指定長(byte)切出し
-
splitの逆の処理
-
メールヘッダのMIMEエンコード...
-
数字を文字列に変換し短縮化する
-
Perl/Tk使用時のUTF-8コード文...
-
文字列と数字を含むセルから数...
-
GDBでデバッグするとき文字列の...
-
perlを使用しての特定行抽出に...
-
プログラミング HSPの変数につ...
-
perlで文字列を短く(圧縮)し...
-
関数chop
-
CSVファイルの中で、「 , 」カ...
-
英数字のみ全角から半角に変換
-
エクセルで数値を全角文字(カ...
-
EXCELからCSVにすると余計なカ...
-
住宅にカナを入力する際に丁目...
おすすめ情報