psql の入出力エンコーディングを確認・設定する
Windows 上の PostgreSQL のコマンドラインツール psql を使ってデータベースにデータを取り込もうとしたところ、次のようなエラーが出た。 入力の文字エンコーディングが合っていない。
example_db=> \i data.sql psql:data.sql:41: ERROR: invalid byte sequence for encoding "SJIS": 0x85 0x27
入出力エンコーディングを確認する
example_DB=> show client_encoding; client_encoding ----------------- SJIS (1 row)
入出力エンコーディングを設定する
一時的に(クライアントを終了するまで)エンコーディングを変えるには \encoding
内部コマンドを用いる。
example_DB=> \encoding 'UTF8' example_DB=> show client_encoding; client_encoding ----------------- UTF8 (1 row)
デフォルトの入出力エンコーディングを設定する
デフォルトの入出力エンコーディングは Unix 系の OS なら環境変数 LC_TYPE
に基づいて決定される。
それを変更するには環境変数 PGCLIENTENCODING
を設定する。
PGCLIENTENCODING=UTF8
macOS に Homebrew で Apache をインストール
brew install httpd
macOS に標準で入っている Apache を止める
# サービスの停止 sudo launchctl stop /System/Library/LaunchDaemons/org.apache.httpd.plist # 自動起動の停止 sudo launchctl stop /System/Library/LaunchDaemons/org.apache.httpd.plist
設定ファイル
/usr/local/etc/httpd/httpd.conf
起動・停止コマンド
# /usr/local/bin/apachectl apachectl start apachectl graceful apachectl restart apachectl stop
Axios の使い方
Axios は XMLHttpRequest を Promise ベースで使えるようにしたライブラリ。Promise の polyfill を使えば IE 11 から動作する。
公式の README よりよく使う部分を抜粋。
GET リクエストの基本
基本形は次の通り。HEAD, OPTIONS, DELETE メソッドの場合も同様の引数をとる。
const response = await axios.get(url[, config])
GET パラメータは URL に含めるかわりに次のように指定することができる。
// axios.get('/user?id=12345') と等価 axios.get('/user', { params: { id: '12345' } })
POST リクエストの基本
基本形は次の通り。PUT, PATCH メソッドの場合も同様の引数をとる。
const response = await axios.post(url[, data[, config]])
リクエストボディにプレーンなオブジェクトを渡すと application/json 形式で送信される(リクエストヘッダも出力される)。
const user = { id: '12345', name: 'John' } axios.post('/user/update', user) // => {"id":"12345","name":"John"}
データを application/x-www-form-urlencoded 形式で送信したい場合は URLSearchParams クラスのインスタンスを渡す。
const params = new URLSearchParams() Object.keys(user).forEach((key) => { params.append(key, user[key]) }) axios.post('/user/update', params) // => id=12345&name=John
レスポンス
レスポンスボディは data プロパティに格納されている。
try { const response = await axios.get('/user?id=12345') console.log(response.data) // => { user: { id: 12345, name: 'John' } } } catch (error) { console.error(error) }