- PR -

vimでUTF-8を使いたい

1
投稿者投稿内容
けんじ
会議室デビュー日: 2004/02/26
投稿数: 5
投稿日時: 2005-12-13 19:12
けんじです。

debian(sarge)でvimを使ってます。utf-8の文字コードで読み書きしたいのですがどのようにしていいのか分かりません。

.vimrcファイルを
syntax on
set nobackup
set fileencoding=utf-8
set fileencodings=iso-2022-jp,euc-jp,utf-8,ucs2le,ucs-2,cp932

にしてますが、ファイルを保存してもどうもutf-8で保存されてないようです。

utf-8で保存されてないのは、HTMLファイルを
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
にしてブラウザでhtmlファイルを見ると文字化けするのですがcharsetをeuc-jpに変更すると文字化けせずにブラウザに表示することからutf-8で保存されてないと判断しました。
また
$ nkf -w -Lu hoge.text > copied.txt; vi copied.txt
としても文字が化けてしまいます。

vimのバージョンは7.0です。

どなたか、vimでutf-8で読み書きする方法をご存知でしたら御教授下さい。
H田中
会議室デビュー日: 2005/06/04
投稿数: 5
投稿日時: 2005-12-14 17:20
vim 7.0はリリースされてませんけど…。

localeはja_JP.EUC-JPですか?
コード:
set encoding=utf-8


を指定しない場合、新規ファイルはlocaleと同じ文字コードになります。

上記を指定したなら、加えて
コード:
set termencoding=euc-jp


も指定しないと表示が化けるかもしれません。

更に
引用:
set fileencodings=iso-2022-jp,euc-jp,utf-8,ucs2le,ucs-2,cp932


は色々と問題が起こりそうな気がします。
最低でもlocaleと同じ文字コードは末尾に移動する必要があるかと。
例えば
コード:
set fileencodings=iso-2022-jp,utf-8,ucs2le,ucs-2,cp932,euc-jp

けんじ
会議室デビュー日: 2004/02/26
投稿数: 5
投稿日時: 2005-12-14 18:02
引用:

H田中さんの書き込み (2005-12-14 17:20) より:
vim 7.0はリリースされてませんけど…。



7.0aaをmakeしました。

引用:

localeはja_JP.EUC-JPですか?
コード:
set encoding=utf-8


を指定しない場合、新規ファイルはlocaleと同じ文字コードになります。

上記を指定したなら、加えて
コード:
set termencoding=euc-jp


も指定しないと表示が化けるかもしれません。



すいません。環境をお伝えしてませんでした。

DebianをGnomeでインストして付いてましたgnome端末を使って文字コードの設定をUnicodeにしてます。

環境変数を
$ echo $LANG
ja_JP.UTF-8

.vimrcファイルは

syntax on
filetype on
filetype plugin on
set termencoding=utf-8
set encoding=utf-8
set fileencoding=utf-8
set guifont=-misc-fixed-medium-r-normal--15-140-75-75-c-90-iso10646-1
set fileformat=unix
set fileencodings=iso-2022-jp,utf-8,ucs2le,ucs-2,cp932,euc-jp

と設定してます。

なぜEUC-JPにしないか?と申しますと、AjaxをやるにはUTF-8でないと文字化けに悩まされるようなので1部のユーザ環境を完全にUTF-8の環境にしたいのです。

引用:

set fileencodings=iso-2022-jp,euc-jp,utf-8,ucs2le,ucs-2,cp932
は色々と問題が起こりそうな気がします。
最低でもlocaleと同じ文字コードは末尾に移動する必要があるかと。
例えば
コード:
set fileencodings=iso-2022-jp,utf-8,ucs2le,ucs-2,cp932,euc-jp





そのようにしてみましたが改善しませんでした。
コブラ
ぬし
会議室デビュー日: 2003/07/18
投稿数: 1038
お住まい・勤務地: 神奈川
投稿日時: 2005-12-14 19:07
http://www01.tcp-ip.or.jp/~furukawa/nkf_utf8/
けんじ
会議室デビュー日: 2004/02/26
投稿数: 5
投稿日時: 2005-12-14 19:23
コブラさん返信ありがとうございます。

$ nkf -w -Lu ファイル名 > utf-file

とすれば確かにutf-8のコードになると思いますがvimでソースを修正したりできませんのでその解決方は私も検討しましたが、何度もコマンドを打たないといけないのとかいった効率性を考えるとnkfをその都度使うことはあまりしたくはありません。

あれからvimのバージョンを変更してversion 6.3.71にしてみました。

$ vi hoge
ほげ # 文字が化けなくなった
ZZで保存する

$ kcc -c hoge
hoge: ambiguous (EUC, shift-JIS or 8-bit JIS [])
$ file hoge
hoge: ISO-8859 text

$ nkf -w -Lu hoge > utf-hoge
$ kcc -c utf-hoge
utf-hoge: data
$ file utf-hoge
utf-hoge: UTF-8 Unicode text

UTF-8で扱われてないような状況になりました。
soluna
ベテラン
会議室デビュー日: 2004/06/15
投稿数: 59
投稿日時: 2005-12-14 23:35
なんかiconvが入ってなさそうな感じが。

新規ファイルは、保存前にfileencoding=utf-8すれば問題ないはずですが。
けんじ
会議室デビュー日: 2004/02/26
投稿数: 5
投稿日時: 2005-12-15 09:44
solunaさん有難うございます。

:ver
VIM - Vi IMproved 6.3 (2004 June 7, compiled Apr 24 2005 15:45:46)
Included patches: 1-71
Compiled by tretkowski@kentucky.office.teamix.net
Big version with GTK2 GUI. Features included (+) or not (-):
+arabic +autocmd +balloon_eval +browse ++builtin_terms +byte_offset +cindent
+clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments
+cryptv +cscope +dialog_con_gui +diff +digraphs +dnd -ebcdic +emacs_tags +eval
+ex_extra +extra_search +farsi +file_in_path +find_in_path +folding -footer
+fork() +gettext -hangul_input +iconv +insert_expand +jumplist +keymap +langmap
+libcall +linebreak +lispindent +listcmds +localmap +menu +mksession
+modify_fname +mouse +mouseshape +mouse_dec +mouse_gpm -mouse_jsbterm
+mouse_netterm +mouse_xterm +multi_byte +multi_lang +netbeans_intg -osfiletype
+path_extra -perl +postscript +printer -python +quickfix +rightleft +ruby
+scrollbind +signs +smartindent -sniff +statusline -sun_workshop +syntax
+tag_binary +tag_old_static -tag_any_white -tcl +terminfo +termresponse
+textobjects +title +toolbar +user_commands +vertsplit +virtualedit +visual
+visualextra +viminfo +vreplace +wildignore +wildmenu +windows +writebackup
+X11 -xfontset +xim +xsmp_interact +xterm_clipboard -xterm_save
system vimrc file: "$VIM/vimrc"
user vimrc file: "$HOME/.vimrc"
user exrc file: "$HOME/.exrc"
system gvimrc file: "$VIM/gvimrc"

iconvは+になってますので入ってると判断しました。

$ vi hoge
ほげ # 日本語を入力
:set fileencoding=utf-8 # コマンドを打つ
コマンドを打ってZZで保存

$ file hoge
hoge: UTF-8 Unicode text
$ kcc -c hoge
hoge: data

有難うございます。問題無くutf-8になっているようです。

ただコマンドを自分で打つと確実なのに、vimrcに書くとうまくいかないのは良く分かりませんのでもう少し.vimrcの仕様などを調べてみます。

同じような現象になっている方などおられましたら、ぜひご教授ください。

皆さん、有難うございました。
けんじ
会議室デビュー日: 2004/02/26
投稿数: 5
投稿日時: 2005-12-15 10:02
追記です。

すいません、version7.0aaとversion 6.3.71を変えたり、いろいろ.vimrcの設定を変更しているうちに混乱していたようです。

今の設定は下記のようになってます。

set termencoding=euc-jp
set encoding=utf-8
set fileencoding=utf-8
" shift-jis系は要らないので削除
set fileencodings=iso-2022-jp,euc-jp,utf-8,ucs2le,ucs-2

gnome端末をUnicode設定にしないでEUCのまま使って、H田中さんに教えて頂いたようにtermencodingをeuc-jpにしfileencoding=utf-8に指定すると文字化けもせずutf-8で保存できるようになりました。

私がクライアントの端末とVimの文字コードの指定をかなり混乱して使っていたように思えます。最初のH田中さんの説明で解決していたものをいろいろやりすぎて深みにはまってしまいました。皆さんすいませんでした。

回答して下さった方々どうも有難うございました。

1

スキルアップ/キャリアアップ(JOB@IT)