文字化け encodingとfileencodingsの設定
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 ...
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を前に記述したらまた文字化けしました・・・
今回のことで文字コードに興味がもてたので少しづつ勉強しようかなと思いました。スクリプト言語のこともあるので。