文字化け encodingとfileencodingsの設定
Bài đăng này đã không được cập nhật trong 9 năm
zshのキーバインドをvi風にしたいなと考えて.zshrcを開いたときに問題が発生してしまった。
なんか文字化けしてる・・・なぜ?
`.zshcr`
1 #^[$B%*%W%7%g%s^[(B
2 setopt auto_cd
3 setopt auto_pushd
4
5 #^[$BJd40^[(B
6 #for-zsh-completions
7 fpath=(/usr/local/share/zsh-completions $fpath)
8
9 #^[$BJd405!G=$rM-8z$K$9$k^[(B
10 autoload -Uz compinit
11 compinit -u
12 #^[$BJd40^[(B ^[$B%a%K%e!<$NA*Br%b!<%I^[(B
13 zstyle ':completion:*:default' menu select=2
14
15 #^[$BJ8;z$N6h@Z$j@_Dj^[(B
16 autoload -Uz select-word-style
17 select-word-style default
18 zstyle ':zle:*' word-chars "/=;@;{}.|"
19 zstyle ':zle:*' word-style unspecified
20
21 #^[$BBgJ8;z$H>.J8;z$r6hJL$7$J$$^[(B
22 zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
とりあえず.vimrcの設定を見直すことに
`.vimrc`
:set encoding=utf-8
:set fileencodings=utf-8,iso-2022-jp,euc-jp,sjis
vimの文字コード設定に知っている文字列をつっこんでいただけなので、どうやらこのような問題が起きたみたいです。
調べてみると encodingはvimの内部で使用する文字コードだそうです。 またfileencodingsをしなかった場合自動的にこのencodingにしていした文字列で開かれるそうです。
fileecodingsが自動判別の設定です。
記述された順番に対象ファイルを開いてうまくいった文字コードを採用するそうです。
しかし!ここで注意があるみたいです。asciiの文字列は大抵の文字コードにマッチしてしまうみたいなので
1.fileecodingsの最初に書かれた文字コードが採用されてしまう。
2.encodingに指定された文字を見つけたら即採用
とうことです。
つまり僕の設定はutf-8でしか開かない!!というとんだ設定をしていたみたいです。
というわけで設定を直しました。
`.vimrc`
;set encoding=utf-8
:set fileencodings=iso-2022-jp,euc-jp,sjis,utf-8
これで無事
`.zshcr`
1 #オプション
2 setopt auto_cd
3 setopt auto_pushd
4
5 #補完
6 #for-zsh-completions
7 fpath=(/usr/local/share/zsh-completions $fpath)
8
9 #補完機能を有効にする
10 autoload -Uz compinit
11 compinit -u
12 #補完 メニューの選択モード
13 zstyle ':completion:*:default' menu select=2
14
15 #文字の区切り設定
16 autoload -Uz select-word-style
17 select-word-style default
18 zstyle ':zle:*' word-chars "/=;@;{}.|"
19 zstyle ':zle:*' word-style unspecified
20
21 #大文字と小文字を区別しない
22 zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'
正しい文字コードで開けるようになりました。
ちなみにfile -I .zshrcで文字コードを調べてみたらなぜかus-asciiになっていました。
ascii系ということは大体の文字コードが成功になってしまうのでeuc-jpとか先に書いてしまったら文字化けしてしまいますね。ascii系のファイルを読める形で開くには互換性のあるiso-2022を前に持ってこなければなりませんね。
試しにeuc-jpを前に記述したらまた文字化けしました・・・
今回のことで文字コードに興味がもてたので少しづつ勉強しようかなと思いました。スクリプト言語のこともあるので。
All rights reserved