Linuxから手軽にJSON文字列を整形してコンソールに出力してくれるコマンドがあったのでご紹介。
echo '{"json":"obj"}' | python -mjson.toolCode language: PHP (php)
echoの部分は、catでやればjsonファイルをそのまま読み込むこともできます。
Linuxから手軽にJSON文字列を整形してコンソールに出力してくれるコマンドがあったのでご紹介。
echo '{"json":"obj"}' | python -mjson.toolCode language: PHP (php)
echoの部分は、catでやればjsonファイルをそのまま読み込むこともできます。
s = unicode(raw_input(), "utf-8").encode('unicode_escape')
print s
print s.decode('unicode_escape')Code language: PHP (php)
これでいけた。Python3からは文字コード周りがすごい修正かかってるらしいんだけども、これがあれば問題ない気がする。raw_inputのところをリテラルに変えてもいいし、エラーも吐かずいい仕事してくれる。
しかし改行コードまではエスケープしてくれない。しかも先頭の\\が消えるときがある。
import cgi
cgi.escape("ほげほげ");Code language: JavaScript (javascript)
こんなのもあった。
文字化けの原因はどうやら一緒にインストールした辞書が原因らしい。UTF-8としてmakeしたはずなのになぜかeuc-8になってしまうらしく。これもまた混乱の原因になってしまうようです。
sudo update-alternatives –config mecab-dictionary
とすることで辞書を変更できるようですが、これでutf-8を指定してるのにも関わらず文字化けする始末。どうしてなんだろうと調べてみると原因は全く関係ないところにありました。
find / -name *mecabrc*
mecabrcファイルにdecDirというディクショナリのディレクトリを指定する変数があるのでこれをutf-8対応のものに書き換えます。ややこしい・・。
/usr/local/etc/mecabrc
/etc/mecabrc
自分の環境だと2つでてきたのでこれらをviで開いてdecdirを書き換え。
書き換える元の辞書のファイルパスがわからない場合は、
find / -name *ipadic-utf8*
で探します。
/var/lib/mecab/dic/ipadic-utf8
こんなかんじになってるのがだいたい正解です。