Mac OS X(v10.3.9)でPerlの5.10.0を使っていて、簡単な日本語が混じったスクリプトが文字化けしてうまく表示できないで困っています。


#!/usr/bin/perl
$a="ono";
print "$aです\n";
print '$aです\n';

英語と数字のスクリプトは動かせています。また、ターミナルで日本語のファイルを表示したり、日本語入力するということもできる状態になっています。

またCPANの初期設定を一般ユーザーで行ない(http://iandeth.dyndns.org/mt/ian/archives/000623.html#b)、Jcodeのインストールもしたのですが、何かミスがあったのかエラーが出てしまう(http://d.hatena.ne.jp/azaburecipes/20081010/1223649912)状態が改善できないでいます。Jcodeのインストールのときにエラーがあったりしたので(http://d.hatena.ne.jp/azaburecipes/20081017/1224207147)、うまくインストールできていないのではないかと思うのですが、全くわからないでいます。

Mac OS Xに詳しくて、お分かりになる方がいらっしゃったらアドヴァイスをいただけると助かります。よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2008/10/19 11:56:28
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答5件)

id:pahoo No.1

回答回数5960ベストアンサー獲得回数633

ポイント80pt

スクリプトは utf-8 で書いていますか?

でしたら、スクリプトの冒頭に

use utf8;

と記述してみてください。


参考サイト

id:azaburecipes

アドヴァイスをありがとうございます。use utf8;と書いて試してみると、このようなエラーが出てしまいます。

Can't open perl script "utf8.pl": No such file or directory

(http://d.hatena.ne.jp/azaburecipes/20081017/1224220636)

2008/10/17 14:26:11
id:pahoo No.2

回答回数5960ベストアンサー獲得回数633

ポイント80pt

#1のコメント:

Can't open perl script "utf8.pl": No such file or directory

このエラーメッセージは、"utf8.pl" が見つからないことを示しています。

以下を確認してください。

  1. スクリプトファイル "utf8.pl" は正しいパスで指定していますか?
  2. "use utf8;" を記述している状態で、同じパス、同じファイル名 "utf8.pl" で英数字のみからなるスクリプトは動きますか?

※設定された回答回数の上限になりました。さらにフォローが必要でしたら、コメント欄を開けていただくか、回答回数を増やしてください。

id:azaburecipes

回答をありがとうございます。正しいパスでなかったようです。

正しいパスにすると、このように表示されました。

Wide character in print at utf8.pl line 5.

$aです\n$

2008/10/17 16:14:28
id:pahoo No.3

回答回数5960ベストアンサー獲得回数633

ポイント80pt

#2のコメント:

Wide character in print at utf8.pl line 5.

UTF-8フラグがONになっていると思われます。

文字列を print すると「Wide character in print at」と出力されて困った」を参考にしてください。

id:azaburecipes

UTF-8フラグをOFFにする作業をするといいのでしょうか?UTF-8フラグの確認の方法も試してみたいのですが、どのように使っていいのかわからないので具体的に教えてもらえると助かります。

2008/10/17 21:36:54
id:hetena2 No.4

回答回数97ベストアンサー獲得回数1

ポイント80pt

ちゃんとインストールできてないですね。すくなくとも、管理者かrootでインストールしてください。osxでインストールすると、ライブラリの場所などが特殊です。"mac perl インストール"で検索してみてください。

id:shintabo No.5

回答回数45ベストアンサー獲得回数10

ポイント100pt

前の方が回答されていますが、

binmode(STDOUT, ":utf8");

を付けたらどうでしょうか?

#!/usr/bin/perl

use strict;

use warnings;

binmode(STDOUT, ":utf8"); # utf8フラグOFF

my $a = "ono";

my $b = "$aです\n";

utf8::decode($b); # 文字列をフラグ付きに変換

print "$b\n";

exit;


結果

> perl mac.pl

onoです


binmodeしない結果

> perl mac.pl

Wide character in print at mac.pl line 11.

onoです

id:azaburecipes

アドヴァイスをありがとうございます。試してみたところ、うまく動かすことができました。(http://d.hatena.ne.jp/azaburecipes/20081019/1224381272)

また、miで改行コードをLF、文字コードをUTF-8に設定してみたところ、はじめのスクリプトで日本語の表示ができることがわかりました。TextEditを使っていたので、試用しているエディタも影響していたのかもしれません。

2008/10/19 11:04:58

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません