人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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に詳しくて、お分かりになる方がいらっしゃったらアドヴァイスをいただけると助かります。よろしくお願いします。


●質問者: azaburecipes
●カテゴリ:コンピュータ インターネット
✍キーワード:CPAN Mac OS X Perl print V10
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● pahoo
●80ポイント

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

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

use utf8;

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


参考サイト

◎質問者からの返答

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

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

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


2 ● pahoo
●80ポイント

#1のコメント:

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

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

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

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

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

◎質問者からの返答

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

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

Wide character in print at utf8.pl line 5.

$aです\n$


3 ● pahoo
●80ポイント

#2のコメント:

Wide character in print at utf8.pl line 5.

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

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

◎質問者からの返答

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


4 ● hetena2
●80ポイント

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


5 ● shintabo
●100ポイント

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

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です

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ