DBにInsertするアプリケーションを作っていた時に文字化けで困った話。
筆者の動作確認環境
この記事で使用している動作確認環境は下記のとおりです。
APサーバ
・H/W :Lenove YOGA950i
・OS :Windows11
・Java : Jdk18
・Springboot: 2.6.7
・OS :Windows11
・Java : Jdk18
・Springboot: 2.6.7
DBサーバ
・Docker イメージ: mysql:oracle(arm版、8.0.29)
解決策:WindowsのコマンドラインのCurlコマンドで日本語は使わないこと!
curl -H "Content-Type:application/json; charset=UTF-8" -H "X-Accept: application/json" -X POST -d "{\"name\":\"サンプル太郎\", \"address\":\"test address\", \"phoneNumber\":\"0120123456\"}" http://localhost:8080/dbaccesssample/insert
上のコマンドではjsonのパラメータに「name:サンプル太郎」としているが、どうやっても文字化けしてしまいました。
解決策としてはコマンドラインに日本語を書くのではなく、jsonファイルに保存してそれを@fileで呼び出す。コマンドラインで日本語を書かない。
curl -H "Content-Type:application/json; charset=UTF-8" -H "X-Accept: application/json" -X POST -d @./file/dbAccessInsert.json http://localhost:8080/dbaccesssample/insert
DBの文字コード、OS、コンテナといろいろと試しました。その中でもWindowsのコマンドラインだけが今のところうまくいかなかったのでこの解決策に。
Curlコマンドを使えるようになったのは便利なのですが、何かとまだ問題はあるようですね。自分の設定の問題だけかもしれませんが…
コメント