• ベストアンサー

emacs→cygwinで日本語

タイトルでは分かりづらいのですが・・・ emacsで日本語を出力するプログラムを作成し、(例:printf("あいうえお\n");) これをcygwinで表示しようとしているのですが、文字化けしてしまいます。 色々ググってやってみたのですができません。 方法知っている方、ご回答お願いします。 ちなみに$echo あいうえお で あいうえお が返ってくることはできます。

質問者が選んだベストアンサー

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

文字コードはどうなっているのですか? 例えば、EmacsでShift_JISで作成→CygwinでUTF-8の端末に出力 では文字化けします set-buffer-file-coding-systemで変更できます。

mmmommo
質問者

お礼

できました!ありがとうございました^^

関連するQ&A

  • emacs内のterminalで日本語表示

    タイトル通りなのですが、 emacsを二分割にし、左はC言語を書き、右は"M-x ansi-term"によってターミナルを呼び出してコンパイル、実行を行うのですが printf内に日本語があるとterminalでは文字化けしてしまいます。どうすればいいでしょうか。 捕捉としてterminalを単体で開いて実行した場合は文字化けしません。 また別の質問になるのですが、 emacsでC言語を書き、"M-x compile"でコンパイル、実行をした場合、表示は問題ないのですが、 scanfを用いた場合、数値入力が出来ません。どうすればいいのでしょうか。 OSはMacOSX、Carbon emacs使用です。よろしくお願いします。

  • emacs lisp マクロ

    emacsを使う上で簡単に printf("\n"); ってのが入力される様にやろうとして, .emacsに次のように書いてやってみました. (defun input-print () (interactive) (insert "printf("\n");") 「"」が誤認識起こして,エラーが起きるし,それを抜かしても 「\n」が改行として認識されてしまいました. C言語みたく文字を')'と表すようにやってみたけれどダメでした. 後はその前に「//」を付けたりしてみましたが効果ありませんでした. 「"」と「\n」が文字として認識出来る様に出来る様にはどうしたらいいのでしょうか? もしくは,上に書いた以外の方法がありましたら教え下さい.

  • cygwinのtschで日本語文字化け

    cygwin2.738 tcshでバッチを実行した際に、echoで表示される日本語が文字化けします。 下記を参考にnkfをインストールしてもダメでした。 http://blog.goo.ne.jp/rm_-rf/e/63aa37f245f401d1404b107355d27a52 かなり前に別のPCでcygwinをインストールして日本語表示できていますが、この時にどうやったか覚えていません。 このPCからnkfをコピーしてもダメでした。 tcshのversionを見るとkanはありますが、dspmがないです。 別のPCからtcshをコピーするとdspmが表示されますが文字化けします。 日本語が表示できているcygwin環境をそっくり移すことはできないでしょうか? cygwinフォルダ丸ごとコピー以外に何があるでしょうか?

  • Emacs23の日本語化について教えてください。

    これで3日連続の質問になります。 ご迷惑おかけしてすみません。 Linux歴は長いのですが、スキルは初心者と同等です。 恥ずかしい話ですが、書籍・ネットの内容を何年経っても理解できません。 そこですみませんが質問です。 Emacs23の日本語化について検索しました。 例えば http://www11.atwiki.jp/s-irie/pages/13.html 多分このサイトが一番参考になると思っています。 その内容の中でまず menu-tree-el-0.97.tar.gz をダウンロードしました。 しかし、それ以下の {使い方 menu-tree.el をEmacsのロードパスの通ったディレクトリに保存し、バイトコンパイルします。 .emacsファイルに以下の内容を追加します。 (require 'menu-tree) 文字化けする場合は、menu-tree.elをロードする前にmenu-tree-coding-systemに適当なcoding-systemをセットします。 (if (and (= emacs-major-version 22) (eq window-system 'x)) (setq menu-tree-coding-system 'utf-8)) (require 'menu-tree) 「utf-8」の部分は各自の環境に合わせて設定してください。 } がさっぱり解りません。 ようやく少し「vi」が使えるようになりましたが どこに(require 'menu-tree)を追加するのか解りません。 書籍・ネットの説明でコマンドの先頭に$や#が付いていないと、意味が解りません。 これは、ずっと疑問にしていた事です。 是非教えてください。 「ロードパス」を検索しましたが理解しづらかったです。 力が抜けて「バイトコンパイル」は検索しませんでした。 .emacsファイルは$ findで探せるのでしょうか? ボクは何だかくたびれて自分で頑張らないで ここで質問している気がします。 これは「Emacs23の日本語化について」と 言うよりもLinuxの基本といった感じがします。 「vi」でファイルの内容を変えるのはほぼ理解できました。 「ロードパス」「バイトコンパイル」も難しいですが {.emacsファイルに以下の内容を追加します。 (require 'menu-tree)} どこに追加するのか解りません。 もしかすると疲れて丸投げしているような気がします。 落ち着いて休んだら解るのかも知れません。 許してください。 質問をまとめます。 1.Emacs23の日本語化を具体的に教えてください。 2.よくコマンドの先頭に$や#が付いていないのを  書籍やネットで見ますが、これはどう理解したらいいのでしょうか? 3.熟練者は書籍やネットで見ないコマンドを使います。  こういった方々はどうやって覚えたのでしょうか? 以上です。 度々すみません。 お返事を待っています。

  • スクリプト中に日本語を表示させたい。

    現在top監視スクリプト作成中なのですが、内容に日本語を 含めたくとも文字化けしてしまいます。 #!/bin/sh AVE=`uptime | sed 's/[.,]//g' | awk '{print $(NF-2)}'` if [ $AVE -gt 100 ];then echo "`date +%m/%d/%a/;` `uptime`" >> ./top.$$ top -b -n1 |awk '{if((5>=NR)&&(2<=NR)){print}}' >> ./top.$$ echo ----------------------------------------------------------------------------- >> ./top.$$ printf "USER PID %%CPU %%MEM VSZ RSS TTY STAT START TIME COMMAND\n" >> ./top.$$ ps aux |sort +4r |head -10 >> ./top.$$  >> ./top.$$ CPU負荷平均率が$AVEを超えました。 >> ./top.$$ fi 文字コードを指定するnkfを試しても文字化けは変わらず。 どうしたら文字化けせずにログを保存できますでしょうか

  • emacsとコンソールでのどっちつかずの文字化け

    linux初心者です。 少々ややこしい話なのですが、当初、OpenSUSE11がインストールされているコンピュータに、teratermでログインしてプログラムを作成していました。このときはエディタにはemacsを使っていました。emacs上での日本語表示、コンパイル実行後のコンソール上での日本語表示どちらも正しく日本語が表示されていました。 この後、linuxの勉強をしようと思って、OSにFedora8をインストールし、teraterm上から作成したソースをこちらのPCに移すと、実行後のコンソール画面で文字化けしました。これを直すためにコンソール画面の文字コードを変更してコンソールでの日本語が正しく表示されるように修正すると、今度はemacs上での日本語が文字化けしました。 多分、文字コードが合っていないためだと思うんですが、これを回避する方法をご存知の方はいないでしょうか? もし対処法をご存知の方が居られたら、教えていただきたく思います。よろしくお願いします。

  • emacsでの文字化け

    お世話になります。 Linuxでemacsを使って日本語の文章の編集をしていたのですが、 あるときその文書を開いてみると突然文字化けしていました。 codingはどうもUTF8ぽいのですが、emacsで開くと文字化けして読むことができません。 geditやlessだとちゃんと読めますし、webブラウザでもちゃんと読めています(文字コードはUTF8で) どうやったらemacsで元通り読むことができるのでしょうか? linuxはFedoraCore6を使用しています。

  • Emacs端末上で、Cプログラムが適切に動作しない

    こんにちは。 OSは現在、64bit版のWindows7を使っており、Emacsは、Gnu Emacs for Windows 23.4 を使っています。 Emacsのシェルモード(「M-x shell」で起動するモード)では、シェルとしてCygwinに付属しているbashを使い、C言語のソースをコンパイル(あるいはビルド)する場合は、Cygwinのgccを使おうと考えています。 ところが、ビルドしたプログラムをEmacsのシェルモードで実行すると、上手く起動しないので困っています。 具体的には、以下の通りです。 まず、テスト用のCソースファイルとして、以下のような、test.cを作成しました。 ------------------------------------------------------------ #include <stdio.h> int main(void) { int num=2; printf"Enter integer: "); scanf("%d", &num); printf("Number enterd: %d", num); } ------------------------------------------------------------ これをシェルモードで、gccを使ってビルドし、作成されたa.exeを実行すると、以下のようになりました。 [TERM=emacs] ------------------------------------------------------------ Kei-Lavie@Kei:~/C_Programs $ gcc test2.c Kei-Lavie@Kei:~/C_Programs $ ./a.exe 20 Enter integer: Number enterd: 20 ------------------------------------------------------------ 作成された実行ファイルのa.exeを実行すると、まず Enter integer: と表示されるはずなのですが、それが表示されず、止まります。 そこで、整数として適当に20を入力してみると、 Enter integer: Number enterd: 20 と出力されました。 どうやら、必要な入力操作が終わってから、全ての出力操作が行われるようです。 その事を確認するために、先ほどのtest.cのmain関数を、以下のように変更し、数値を入力する場面を2箇所設けました。 ------------------------------------------------------------ int main(void) { int i=2; double d=0.1; printf("Enter integer: "); scanf("%d", &i); printf("Integer enterd: %d", i); printf("\n"); printf("Enter number: "); scanf("%lf", &d); printf("Number enterd: %f", d); } ------------------------------------------------------------ これをシェルモードで、gccを使ってビルドし、作成されたa.exeを実行すると、以下のようになりました。 [TERM=emacs] ------------------------------------------------------------ Kei-Lavie@Kei:~/C_Programs $ gcc test.c Kei-Lavie@Kei:~/C_Programs $ ./a.exe 20 0.123456789 Enter integer: Integer entered: 20 Enter number: Number entered: 0.123457 ------------------------------------------------------------ 作成された実行ファイルのa.exeを実行すると、まず Enter integer: と表示されるはずなのですが、それが表示されず、止まります。 そこで、整数として20を入力してみても止まったままです。 そして浮動小数点数として0.123456789を入力すると、 Enter integer: Integer entered: 20 Enter number: Number entered: 0.123457 と出力されました。 やはり、必要な全ての入力操作が終わってから、最後に全ての出力操作が行われるようです。 しかし、作成されたa.exeを、ktermといった端末上で実行すると、プログラムは以下のように適切に動作します。 [TERM=kterm] ------------------------------------------------------------ Kei@Kei-Lavie /cygdrive/c/Emacs_for_Windows/C_Programs $ ./a.exe Enter integer: 20 Integer entered: 20 Enter number: 0.123456789 Number entered: 0.123457 ------------------------------------------------------------ つまり、上記のように、作成されたプログラムが適切に動作しない問題は、Emacs端末に固有のもののようです。 上記のような問題を解決しようといろいろ試していると、kterm上で、a.exeの出力を、catやnkfといった出力コマンドにパイプすると、上記のような問題と同じ動作をしました。 具体的には以下の通りです。 [TERM=kterm] ------------------------------------------------------------ Kei@Kei-Lavie /cygdrive/c/Emacs_for_Windows/C_Programs $ ./a.exe |nkf 20 0.123456789 Enter integer: Integer entered: 20 Enter number: Number entered: 0.123457 ------------------------------------------------------------ 以上のような事から、どうやらEmacsのシェルモードでは、プログラムの出力を、catなどの出力コマンドにパイプしているのだと予想されます。 そこで、シェルモードの動作を決めると思われる、shell.el(あるいはshell.elc)やcomint.el(あるいはcomint.el)の内容を見てみたのですが、複雑すぎて、どの部分がEmacs端末上での出力に関与しているのかが分かりませんでした。 どうしてもEmacsのシェルモードを使って、C言語での開発を行いたいと思っていますので、 以上の件について、同じような経験をされた方、あるいは、何か解決策としてのご提案がある方は、是非、投稿をお願い致します。 自力では解決できそうにないので、どうか力をお貸しください。 よろしくお願い致します。

  • Windows での gccの使い方

    パソコンの初心者です。プログラムを作った経験はあるのですが、Windowsでgccを使おうとして、思わぬところではまっています。http://www2.ktokai-u.ac.jp/~kfuji/cygwin/cygwin.htm より、cygwin をゲットし、起動することに成功しました。プロンプト「$」が現れ、昔作ったCプログラムは無事コンパイルされました。ところが、プログラム中にprintf("Hello \n"); 等のprintf文を書いてコンパイルし、$./a.exe を実行しても、標準出力にHello の文字が出力されないのです。おそらく簡単なところでつまづいているのだと思います。何を誤っているのでしょうか?助けてください。よろしくお願いします。

  • cygwinでのgcc

    畏れ入ります。 UNIXどタコですm(__)m 最近CYGWINで簡単にUNIXが体験できるということで早速インストールしました。 KDEとGNOME無事起動しました。 で、実は図書館で「Xlibで簡単プログラミング」というのを借りてきたので、ちょっと遊んでみようと思いとりあえずc言語がコンパイル、実行できるかどうかやってみたのですがうまくいきませんでした。 #include <stdio.h> int main(){ printf("HelloWorld \n"); } のようなプログラムをvimで作成するところまではうまくいきました。homeディレクトリに作成されていました。 それで gcc hello.c とやればよいのですよね?! 実は文字がたくさん出て、コンパイルできたのかどうか・・・?そして、a.outというファイルができるのですよね?間違っていますでしょうか? とりあえず、できていません・・・(>_<) ./a.out としても、no fileです・・・ なにか間違っていますでしょうか?