none
jqでフィルタリングできない

    質問

  • Powershellでjqを使っていますが、期待通りにフィルタリングできません。

    以下をPowershell ISEで実行すると、「foo」と出力されます。これは期待どおりです。

    echo '{"items":[{"id":1,"name":"foo"},{"id":2,"name":"テスト"}]}' | jq '.items[] | select(.name == \"foo\") | .name'

    以下を実行すると「テスト」と出力されることを期待しているのですが、何も出力されません。

    echo '{"items":[{"id":1,"name":"foo"},{"id":2,"name":"テスト"}]}' | jq '.items[] | select(.name == \"テスト\") | .name'

    なお、git bash で以下を実行すると、期待通りに「テスト」と出力されます。

    echo '{"items":[{"id":1,"name":"foo"},{"id":2,"name":"テスト"}]}' | jq '.items[] | select(.name == "テスト") | .name'

    原因と対策をご存知でしたら、ご教示ください。

    環境情報です。

    OS:Windows 10

    chcpの結果:Active code page: 932

    $PSVersionTableの結果

    Name                           Value                                                                                                                                                                                                                                                      
    ----                           -----                                                                                                                                                                                                                                                      
    PSVersion                      5.1.16299.98                                                                                                                                                                                                                                               
    PSEdition                      Desktop                                                                                                                                                                                                                                                    
    PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}                                                                                                                                                                                                                                    
    BuildVersion                   10.0.16299.98                                                                                                                                                                                                                                              
    CLRVersion                     4.0.30319.42000                                                                                                                                                                                                                                            
    WSManStackVersion              3.0                                                                                                                                                                                                                                                        
    PSRemotingProtocolVersion      2.3                                                                                                                                                                                                                                                        
    SerializationVersion           1.1.0.1     

    プログラマーな日々(Blog):http://blog.jhashimoto.net/

    IT勉強会・セミナーまとめWiki:http://itstudy.jhashimoto.net/


    2018年2月7日 3:06

回答

  • おそらく、外部コマンドへの出力文字コードが、デフォルトではUS-ASCIIであることが原因であると思われます。

    jqを実行する前に、

    $OutputEncoding = [System.Text.Encoding]::UTF8

    を実行してみてください。

    • 回答としてマーク J.Hashimoto 2018年2月7日 4:21
    2018年2月7日 3:36
    モデレータ

すべての返信

  • おそらく、外部コマンドへの出力文字コードが、デフォルトではUS-ASCIIであることが原因であると思われます。

    jqを実行する前に、

    $OutputEncoding = [System.Text.Encoding]::UTF8

    を実行してみてください。

    • 回答としてマーク J.Hashimoto 2018年2月7日 4:21
    2018年2月7日 3:36
    モデレータ
  • $OutputEncoding = [System.Text.Encoding]::UTF8

    を実行することで、期待通りの動作になりました。

    ありがとうございました。


    プログラマーな日々(Blog):http://blog.jhashimoto.net/

    IT勉強会・セミナーまとめWiki:http://itstudy.jhashimoto.net/


    2018年2月7日 4:22