🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

7 total messages Started by Anonymous Buddha Tue, 21 Sep 2004 14:11
[Q]cat では文字化けしないファイルが vi だと文字化け
#66
Author: Anonymous Buddha
Date: Tue, 21 Sep 2004 14:11
16 lines
1813 bytes
こんにちは。
質問があります。

会社の Solaris で作成した shell script を自宅に持ち帰り編集しようとしたとこ
ろ、日本語が全部文字化けしていました。
その為、nkf を使用し、コードを変換して別ファイルに保存しました。

そこで表題の問題が起こりまして、そのファイルを cat で表示すると日本語も正し
く表示されるのですが、vi で編集しようとすると依然文字化けしています。

vi は特定の文字コードを想定して動作したりしているのでしょうか?
設定ファイルで制御する事は可能でしょうか?

以上、何かご存知の方があればアドバイスをお願いいたします。

よろしくお願いいたします。
Re: [Q]cat $B$G$OJ8;z2=$1$7$J$$%U%!%$%k$,(B vi $B$@$HJ8;z2=$1(B
#68
Author: kuno
Date: Tue, 21 Sep 2004 14:21
7 lines
1069 bytes
$B5WLn$G$9!#(B

gobtma@yahoo.co.jp$B$5$s(B:
> vi $B$OFCDj$NJ8;z%3!<%I$rA[Dj$7$FF0:n$7$?$j$7$F$$$k$N$G$7$g$&$+!)(B
> $B@_Dj%U%!%$%k$G@)8f$9$k;v$O2DG=$G$7$g$&$+!)(B

       $B=c@5$N(Bvi$B$C$F(B*$BF|K\8l$KBP1~$7$F$$$J$$(B*$B$N$G$O(B?          $B5WLn(B
Re: [Q]cat では文字化けしないファイルが vi だと文字化け
#67
Author: Shibuya, Nobuhiro
Date: Tue, 21 Sep 2004 14:28
23 lines
2133 bytes
Anonymous Buddha wrote:

> 会社の Solaris で作成した shell script を自宅に持ち帰り編集しようとしたとこ
> ろ、日本語が全部文字化けしていました。

会社・自宅それぞれのコンピュータ環境は同質なのですか?
全然別のOS, $LANG, locale, $term, $TERMCAPなのですか?

> その為、nkf を使用し、コードを変換して別ファイルに保存しました。

nkf のオプションを指定したのですか?
shell変数 and/or 環境変数の設定にお任せでオプション無指定だったのですか?

> そこで表題の問題が起こりまして、そのファイルを cat で表示すると日本語も正し
> く表示されるのですが、vi で編集しようとすると依然文字化けしています。

なにがどのように化けたというのでしょう?

> vi は特定の文字コードを想定して動作したりしているのでしょうか?

viクローンの種類によってはありえます。古い実装でもありえます。
-- 
mailto:shibuya@dd.iij4u.or.jp           渋谷伸浩
Re: [Q]cat では文字化けしないファイルが vi だと文字化け
#69
Author: Anonymous Buddha
Date: Tue, 21 Sep 2004 15:18
62 lines
3704 bytes
> > 会社の Solaris で作成した shell script を自宅に持ち帰り編集しようとしたとこ
> > ろ、日本語が全部文字化けしていました。
> 
> 会社・自宅それぞれのコンピュータ環境は同質なのですか?
> 全然別のOS, $LANG, locale, $term, $TERMCAPなのですか?

失礼しました。
自宅の環境に付いて説明するのを忘れていました。

会社の環境は今ははっきりわからないのですが、OS=Solaris で、文字コードは
普段 euc コードのはずです。
自宅OSは Fedora Core2 で、文字コード($LANGの内容)は ja_JP.UTF-8 となっており
ます。

> > その為、nkf を使用し、コードを変換して別ファイルに保存しました。
> 
> nkf のオプションを指定したのですか?
> shell変数 and/or 環境変数の設定にお任せでオプション無指定だったのですか?

無指定でした。
無指定の場合、nkf はデフォルトで jis に変換する、とオンライン・マニュアルにありまし
たが、実際には環境変数に動作が依存する部分があるのでしょうか?

nkf のバージョンは下記です。
Network Kanji Filter Version 2.0 (4/0401/Shinji Kono)
うーんと、微妙にどこかで聞き覚えのある名前であるような。。。^^;>Shinji Kono

> > そこで表題の問題が起こりまして、そのファイルを cat で表示すると日本語も正し
> > く表示されるのですが、vi で編集しようとすると依然文字化けしています。
> 
> なにがどのように化けたというのでしょう?

日本語は全部化けてしまいました。
アルファベットは大丈夫でした。

> > vi は特定の文字コードを想定して動作したりしているのでしょうか?
> 
> viクローンの種類によってはありえます。古い実装でもありえます。

自宅vi(m)のバージョンは下記の通りです。

$vi -v

~
~                              VIM - Vi IMproved
~
~                               version 6.2.457
~                            by Bram Moolenaar 他.
~                 Vim はオープンソースであり自由に配布可能です
~
~                        Become a registered Vim user!
~                type  :help register<Enter>   for information
~
~                終了するには           :q<Enter>
~                オンラインヘルプは     :help<Enter> か <F1>
~                バージョン情報は       :help version6<Enter>

以上、これにて何か思い当たる節があれば、アドバイスをお願いします。
ご回答を頂くのに情報が不十分であれば、お手数ですが、ご指摘の程よろしくお
願いします。

以上、よろしくお願いいたします。
Re: [Q]cat では文字化けしないファイルが vi だと文字化け
#70
Author: Shibuya, Nobuhiro
Date: Wed, 22 Sep 2004 12:47
74 lines
4196 bytes
Anonymous Buddha wrote:

> > 会社・自宅それぞれのコンピュータ環境は同質なのですか?
> > 全然別のOS, $LANG, locale, $term, $TERMCAPなのですか?
> 
> 失礼しました。
> 自宅の環境に付いて説明するのを忘れていました。

locale と $term と $TERMCAP は関係ないかもですね。
そのこと見越してこの項目無回答だったのは慧眼。

> 無指定の場合、nkf はデフォルトで jis に変換する、とオンライン・マニュアルにありまし
> たが、実際には環境変数に動作が依存する部分があるのでしょうか?

なかったみたいですね。
オプションの指定はしたか否かとだけ尋ねるべきでした。

> > なにがどのように化けたというのでしょう?
> 
> 日本語は全部化けてしまいました。
> アルファベットは大丈夫でした。

「どのように」の部分の回答が「全部」というの
は求めていた内容とは違うのですが…まあそれはおいといて。

> > > vi は特定の文字コードを想定して動作したりしているのでしょうか?
> >
> > viクローンの種類によってはありえます。古い実装でもありえます。

わたしが使っている nvi は以下のようになっています。

> ruri{shibuya}% ex
> /tmp/vi.v21284: new file, iso-2022-jp: line 1
> :version
> Version 1.79 (10/23/96) The CSRG, University of California, Berkeley.
> multilingualization patch version Nov 17, 1999  by Jun-ichiro itojun Hagino.
> :set all
> noaltwerase     extended        mesg            report=5        tags="tags"
> noautoindent    filec=""        nomodeline      noruler         term="vt100"
> autoprint       flash           msgcat="./"     scroll=11       noterse
> noautowrite     hardtabs=0      noprint=""      nosearchincr    notildeop
> backup=""       noiclower       nonumber        nosecure        timeout
> nobeautify      noignorecase    nooctal         shiftwidth=8    nottywerase
> cdpath=":"      keytime=6       open            noshowmatch     noverbose
> cedit=""        noleftright     optimize        noshowmode      warn
> columns=80      lines=24        path=""         sidescroll=16   window=23
> nocomment       nolisp          print=""        noskipdisplay   nowindowname
> noedcompatible  nolist          prompt          noslowopen      wraplen=0
> escapetime=1    lock            noreadonly      nosourceany     wrapmargin=0
> noerrorbells    magic           noredraw        tabstop=8       wrapscan
> noexrc          matchtime=7     remap           taglength=0     nowriteany
> autodetect="jp+"
> directory="/tmp"
> displayencoding="euc-jp"
> fepkey="/?aioAIO"
> fileencoding="iso-2022-jp"
> inputencoding="euc-jp"
> paragraphs="IPLPPPQPP LIpplpipbp"
> recdir="/var/tmp/vi.recover"
> sections="NHSHH HUnhsh"
> shell="/usr/local/bin/tcsh"
> shellmeta="~{[*?$`'"\"
> :q

ここでの議論に使える特徴的な部分は

> autodetect="jp+"
> displayencoding="euc-jp"
> fileencoding="iso-2022-jp"
> inputencoding="euc-jp"

の4行だと思います。
-- 
mailto:shibuya@dd.iij4u.or.jp           渋谷伸浩
Re: [Q]cat では文字化けしないファイルが vi だと文字化け
#71
Author: Anonymous Buddha
Date: Wed, 22 Sep 2004 18:34
40 lines
3747 bytes
> ここでの議論に使える特徴的な部分は
>
> > autodetect="jp+"
> > displayencoding="euc-jp"
> > fileencoding="iso-2022-jp"
> > inputencoding="euc-jp"
>
> の4行だと思います。

参考になる情報をいただき、ありがとうございました。
おかげさまで、とりあえず解決しました。

頂いたアドバイスを参考にググった所、下記ホームページで、
http://pcmania.jp/~moraz/howto/install.html#japanese
下記の記述を見つけました。
*********************************
日本語を使うための設定
自分でソースからインストールした場合には、日本語が通るように設定ファイルに手を入れる必要があります。
設定ファイル(~/.vimrc)に次のように書いてください。
" 日本語を扱うために必要
set encoding=japan
" ファイルの漢字コード自動判別のために必要。(要iconv)
if has('iconv')
  set fileencodings+=iso-2022-jp
  set fileencodings+=utf-8,ucs-2le,ucs-2
  if &encoding ==# 'euc-jp'
    set fileencodings+=cp932
  else
    set fileencodings+=euc-jp
  endif
endif*********************************この記述を追加した後、nkf で jis 変換したファイルを開いたところ、文字化けしていました。変換前
のファイルを開いても、文字化けしていました。少し考えた後、ターミナルの文字コードを euc-jis に変更して試したところ、変換後(jis)ファイ
ルは文字化け、変換前ファイル(euc)は正しく表示する事が出来ました。私が最初に問題に直面した時の状況は、おそらく下記と思います。① 日本
語に関する設定をしていなかった為に、vi(m) は決め打ちで文字コード=UTF-8でファイルを解釈していた。※ホームディレクトリに.vimrcを置いて
いなかった為、/etc/vimrc などがデフォルトで使用されていたのかと憶測しているのですが、そのファイルに下記の記述があります。if v:lang
=~ "utf8$" || v:lang =~ "UTF-8$"   set fileencodings=utf-8,latin1endif.vimrc の文法を知らないのですが、上記は入力ファイルの文字コー
ドを utf-8,latin1 に強制している記述ではないかと強く憶測します。② 元のファイルのコードはEUCだった。③ cat はただファイルを吐くだけ
なので、nkf で jis に変換した後、端末の文字コードを jis にすれば正しく表示できた。しかし、vi(m)では入力ファイルを UTF-8 で決め打ちし
ていた為、jis 変換したファイルも、変換前の euc-jis のファイルも正しく表示する事が出来なかった。以上、何かお気づきの点や余談、補足な
どあれば、ご指摘をお願いします。有用なアドバイスを頂き、ありがとうございました。(゜゜)(。。)ペコッ
Re: [Q]cat では文字化けしないファイルが vi だと文字化け
#72
Author: Anonymous Buddha
Date: Wed, 22 Sep 2004 18:41
60 lines
3999 bytes
返信を行ったところ、何故か改行がメチャクチャになってしまいましたので、
再度投稿します。
失礼しました。。

> ここでの議論に使える特徴的な部分は
>
> > autodetect="jp+"
> > displayencoding="euc-jp"
> > fileencoding="iso-2022-jp"
> > inputencoding="euc-jp"
>
> の4行だと思います。

参考になる情報をいただき、ありがとうございました。
おかげさまで、とりあえず解決しました。

頂いたアドバイスを参考にググった所、下記ホームページで、
http://pcmania.jp/~moraz/howto/install.html#japanese
下記の記述を見つけました。
*********************************
日本語を使うための設定
自分でソースからインストールした場合には、日本語が通るように設定ファイルに手を入れる
必要があります。
設定ファイル(~/.vimrc)に次のように書いてください。
" 日本語を扱うために必要
set encoding=japan
" ファイルの漢字コード自動判別のために必要。(要iconv)
if has('iconv')
  set fileencodings+=iso-2022-jp
  set fileencodings+=utf-8,ucs-2le,ucs-2
  if &encoding ==# 'euc-jp'
    set fileencodings+=cp932
  else
    set fileencodings+=euc-jp
  endif
endif
*********************************
この記述を追加した後、nkf で jis 変換したファイルを開いたところ、文字化けしていました。
変換前のファイルを開いても、文字化けしていました。
少し考えた後、ターミナルの文字コードを euc-jis に変更して試したところ、変換後(jis)ファイ
ルは文字化け、変換前ファイル(euc)は正しく表示する事が出来ました。
私が最初に問題に直面した時の状況は、おそらく下記と思います。
① 日本語に関する設定をしていなかった為に、vi(m) は決め打ちで文字コード=UTF-8でファイ
ルを解釈していた。
※ホームディレクトリに.vimrcを置いていなかった為、/etc/vimrc などがデフォルトで使用されて
いたのかと憶測しているのですが、そのファイルに下記の記述があります。
if v:lang=~ "utf8$" || v:lang =~ "UTF-8$"
   set fileencodings=utf-8,latin1
endif
.vimrc の文法を知らないのですが、上記は入力ファイルの文字コードを utf-8,latin1 に強制して
いる記述ではないかと強く憶測します。

② 元のファイルのコードはEUCだった。

③ cat はただファイルを吐くだけなので、nkf で jis に変換した後、端末の文字コードを jis にすれ
ば正しく表示できた。しかし、vi(m)では入力ファイルを UTF-8 で決め打ちしていた為、jis 変換した
ファイルも、変換前の euc-jis のファイルも正しく表示する事が出来なかった。

以上、何かお気づきの点や余談、補足などあれば、ご指摘をお願いします。有用なアドバイスを頂
き、ありがとうございました。(゜゜)(。。)ペコッ
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads