UTF8によるMySQLコマンドラインフォーマット
質問
スウェーデン語/ノルウェー語の文字列を含むデータベーステーブルを持っています。
あるデータをクエリすると、このような出力が得られます。
出力に
set names latin1;
+-----------------------------------+
| name |
+-----------------------------------+
| Kid Interi##### |
| Bwg Homes |
| If Skadef####kring |
| Jangaard Export |
| Nordisk Film |
+-----------------------------------+
では、もし私が
set names utf8;
を使用すると、MySQL コマンド ラインの表形式出力のフォーマットが壊れます。
による出力
set names utf8;
+-----------------------------------+
| name |
+-----------------------------------+
| Kid Interiør |
| Bwg Homes |
| If Skadeförsäkring |
| Jangaard Export |
| Nordisk Film |
+-----------------------------------+
質問です。
これは大きな問題ではありませんが、出力が少し読みづらくなっています。表形式の書式を維持する方法をどなたかご存知でしょうか?
どのように解決するのですか?
短い答え
オプションでクライアントを起動する
--default-character-set=utf8
:
mysql --default-character-set=utf8
これをデフォルトで設定するには
/etc/mysql/my.cnf
ファイルで設定できます。
[mysql]
default-character-set=utf8
短い答えは動作しませんでした、以下をお読みください。
上のコマンドは強制的に
character_set_client
,
character_set_connection
と
character_set_results
というコンフィグ変数を
utf8
.
文字セットに関連するすべての設定変数の値を確認するために、実行することができます。
show variables like '%char%';
は
character_set_database
は、現在いるデータベース(スキーマ)の文字セットを指定します。スキーマとテーブルはデフォルトで
character_set_server
で明示的に指定されていない限り
CREATE
ステートメントで明示的に指定されていない限り
は
character_set_server
は変更することができます。
my.cnf
ファイルで変更できます。
[mysqld]
character-set-server = utf8
さらに、テーブルとカラムは、親テーブルやスキーマと異なる独自の文字セットを持つことができます。データベース内の各テーブルとカラムの値を具体的にチェックするには、この回答を参照してください。 MySQL データベース/テーブル/カラムのキャラクタセットを確認するにはどうすればよいですか?
既存のテーブルとカラムのキャラクタセットを変更したい場合は、この回答を参照してください。 MySQLデータベース全体のキャラクタセットと照合順序をUTF-8に変換する方法は?
接続キャラクタセットの詳細については mysql docsumentation にあります。 .
すべてutf8に設定されていますが、まだ奇妙な文字が表示されます。
すべての文字セット変数、テーブル、カラムが
utf8
に設定されていたとしても、画面上に奇妙な文字が表示される場合があります。例えば、誰かが Unicode 文字を
utf8
カラムに Unicode 文字を書き、クライアントから
latin1
接続で (例えば
mysql --default-character-set=latin1
). この場合、値が書き込まれたのと同じ文字セットでデータベースに接続する必要があります。また、正しいエンコーディングで取得したり書き換えたりすることができます。
注意
: コメントで指摘されているように、mysql の
utf8
エンコーディングは UTF-8 の真の完全な実装ではありません。もし UTF-8 の完全な実装が必要な場合は
utf8mb4
文字セットを使用することができます。
mysql --default-character-set=utf8mb4
関連
-
Mysqlデータベースの手動および定期的なバックアップ手順
-
[解決済み] KEYキーワードは何を意味するのか?
-
[解決済み] SQLを使用してSUMとSUBTRACTを行うには?
-
[解決済み] MySQLでdatetimeとtimestampのどちらのデータ型を使用すべきですか?
-
[解決済み] MySQLでコマンドラインを使用してSQLファイルをインポートするにはどうすればよいですか?
-
[解決済み] MySQLのAUTO_INCREMENTをリセットする方法
-
[解決済み] MySQLの複数行を1つのフィールドに連結することはできますか?
-
[解決済み] MySQLでコマンドラインを使用してユーザーアカウントのリストを取得するにはどうすればよいですか?
-
[解決済み] MySQLのクエリ結果をCSV形式で出力するにはどうすればよいですか?
-
[解決済み] ストアドプロシージャ/ファンクション一覧 Mysqlコマンドライン
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
MySQLのselect、distinct、limitの使い方
-
[解決済み】文字列からuniqueidentifierに変換する際に変換に失敗する - 2つのGUIDの場合
-
[解決済み] どのトランザクションが「テーブルメタデータのロック待ち」状態を引き起こしているかを確認するにはどうすればよいですか?
-
[解決済み] MySQLのプロセスリストを見つけ、それらのプロセスを終了させる方法は?
-
[解決済み] なぜ SQLAlchemy の count() は生のクエリよりずっと遅いのでしょうか?
-
[解決済み] Ubuntu linux上で動作するリモートMySQLサーバーを再起動する方法は?
-
[解決済み] SQLを使用してSUMとSUBTRACTを行うには?
-
[解決済み] MySQL で特定のカラム名を持つすべてのテーブルを見つけるにはどうすればよいですか?
-
[解決済み] MySQLデータベースのキャラクタセットと照合順序をすべてUTF-8に変換する方法は?
-
[解決済み] MySQLのutf8mb4とutf8 charsetsの違いは何ですか?