WindowsのRubyでGitのcommitを扱おうとしてた
一言で言うと cmd.exe 上で動かすと外部コマンドからの入力を Windows-31J だと思い込んでしまうので .force_encoding('UTF-8') を足せという話だったっぽい。(実際には日本語の部分は捨てていたのでなんでもよかった。)
要はこんなやつです。
`git log -n 1 --oneline master`
こいつの結果を処理しようとしてたんだけど、OSX だとうまく動くのに、Windows だと
invalid byte sequence in Windows-31J
って言われちゃう。
Git の commit log って UTF-8 決め打ちじゃないんだっけ、と思いながら Windows の Ruby は Windows での利用に都合のいいように外の世界は Windows-31J で動いているのだという設定になってるんじゃないかな。
ということで
`git log -n 1 --oneline master`.force_encoding('UTF-8')
しておしまい。最終的には hash が手に入ればよかったので、調べたら
`git log -n 1 --pretty=%h master`
でもよかったかもしんない。git ってたまに help 読むとあーなるほどと思うことしきり。(奥が深い症候群か)
More
Recent Posts
- » PlantUMLの-pipeモードとEmacsのplantuml-mode
- » Emacs + ruby-lsp + Standardで快適コーディング
- » ものぐささんのためのTypeScriptを使いつつGASでも使えるライブラリ開発環境
- » quickjs.rbでRubyの環境からJavaScriptのロジック(I/Oのないコード)の動作結果を得る
- » kintoneからエクスポートしたCSVデータの変換ライブラリを作ってみた
- » MCPメモ
- » Mermaidの大きすぎる余白を調整する方法の一例
- » LLMアプリをLLMを使いながら作ってみた
- » Gemini Advancedでもうゲームが変わっていた
- » 今さらLLMのモデルの違いとプロンプトエンジニアリングについて