Laravel Tinker(PsySH) などで日本語入力できない場合の対処
はじめに
Laravel の Tinker(PsySH)、php -a
で起動する PHP の対話シェル(インタラクティブシェル)などで、日本語が入力できない(※)場合の対処方法。
(※イメージとしては 'ほげ'
って入力しても Enter
を押して確定した瞬間に ''
となるような動作)
TL;DR
- 恒久的な対処としては
libedit
の更新 - 一時的な対処としては Unicode デコード可能な関数を定義して利用
目次
環境・条件
1 | $ cat /etc/os-release |
詳細
恒久対処: libedit の更新
参考:
基本的に上記サイトの通り。
コマンドを以下の順で実行していけば OK。(root
ユーザ前提。詳細解説は参考サイトを参照)
1 | # yum, wget やパッケージ名などは、各環境にあわせて適宜読み替え |
一時対処: Unicode デコードでの入力
参考: PHPでUnicodeアンエスケープしたJSONを出力する関数 - オープンソースこねこね
「サーバを変更する権限が無い」など何らかの要因で、前述の対処をすぐには実行できない人向け。
以下の2関数を Tinker 上で定義。(参考サイトからそのまま引用)
1 | function unicode_encode($str) |
Unicodeエスケープシーケンス変換 などのページで、入力したい文字列を Unicode 変換
例: はろーわーるど
→ \u306f\u308d\u30fc\u308f\u30fc\u308b\u3069
unicode_encode
関数に入力すると、日本語入力不可の環境でも(無理やり)日本語を扱うことができる。
※とは言え、不便なことには間違いないので、とっとと恒久対処を行う方が良いと思う。
1 | unicode_encode('\u306f\u308d\u30fc\u308f\u30fc\u308b\u3069') |
まとめ
- 恒久的な対処としては
libedit
の更新 - 一時的な対処としては Unicode デコード可能な関数を定義して利用
参考文献
- Laravel の tinker で日本語が入力できなくて困ったけどなんとかなった話 - Qiita
- Laravel の tinker で日本語が入力出来ない - BLOG - siwa32.com
- PHPでUnicodeアンエスケープしたJSONを出力する関数 - オープンソースこねこね
関連記事
- Laravel で現在の URL 取得方法まとめ
- Laravel で Cookie を使う(参照/設定/削除)
- Laravel で PDF ファイルをブラウザで開く
- Laravel で withCount と having を使って絞り込み
- Laravel で「開始日時 < 終了日時」であることをバリデーションする
- Laravel で生 SQL を実行
- JavaScript で URL のクエリパラメータを操作する方法
- jQuery Select2 で、初期値の設定と選択状態のクリア