-
Notifications
You must be signed in to change notification settings - Fork 11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
enc=utf-8 時に外部コマンドに渡されるマルチバイト文字がutf-8である為、正しく実行されない。 #453
Comments
解決方法としては、コマンドライン引数を GetACP() に合わせて DBCS に戻す方法ですが、どうでしょ? |
または W 系関数を使うとか |
https://gist.github.com/6153332 誰かレビューよろ |
これは出来れば 7.4 までには入れたい |
すみません、この文字列変換というのはどういうときの外部ファイルの実行に適用されるのでしょうか。 |
引数のみ変換します。 そもそもACPがutf-8でないのにutf-8の引数を渡すこと自体が問題なので、互換性が壊れるというより元々壊れていたというのが正解です。 |
enc==ACPの時は未変換なのね。 CreateProcessのUTF-8対応 ついでに その他のencも対応した よ、 |
FEAT_MBYTE ではない場合は、 あと、GUIではない場合の以下の部分も対処が必要ではないでしょうか。
|
メンテ性を考えれば今のほうが良いです。inline展開的な最適化はコンパイラの仕事ですし。 |
だいたい分かりました。つまり、utf-8を渡そうとした時に変換をするんですね。 |
はい。逆に正しく動きます。 |
では送ります。 |
これは?
|
了解です。 |
おっと忘れてた |
パッチ更新 |
そうなんでしょうか? |
|
それはありますね。 |
|
なぜ今まで誰も報告してこなかったんだろう。マルチバイト文字を外部コマンドで使っているユーザがそんなに多くなかったから? :vimgrep がいい感じ動くから? という質問が来てるけど、僕は cp932 使ってるので分からない。誰か答えてあげて。 |
見積もるって僕が? |
「Windows環境で、エンコーディングをutf-8にしていて、マルチバイト文字を外部コマンドに渡す」という再現条件が限定的だからでは? |
外部コマンドのエンコーディングの話題はここで以前議論されていたと思っていて、
自動変換してしまうと、プラグイン側で制御する余地がなくなるのではないでしょうか。 |
コマンドラインのエンコーディングと、標準入出力のエンコーディングは完全に分けて考える必要がありますが。 |
これ以外にも enc=utf-8 でうまく動かないバグがないかが気になるところです。(私も何件か直しましたが。) |
残念! todo入りになりました。
|
7.4.122でマージされました。 |
VCでビルドしたらwarningが出ました。
修正パッチ送付済み。 |
7.4.126で取り込まれました。 |
https://groups.google.com/d/msg/vim_dev/KXzoTZz3-MY/aBCzYETlBQIJ |
ネタ元は
mattn/jvgrep#18
です。読んで頂ければだいたい分かると思いますが、utf-8 で引数を渡しているので DBCS の断片に判断された場合
)
が消えてエラーとなります。The text was updated successfully, but these errors were encountered: