

MySQL Command Line ClientとMySQL Command Line Client -
Unicodeの違いは文字コード規格のUnicodeの違いでしかないようですが、どちらを使ったほうが無難でしょうか？


CC BY-SA 4.0
2023-09-30T23:33:46.337
96392
2023-10-05T04:09:01.040
59959
question
mysql
MySQL Command Line ClientとMySQL Command Line Client - Unicodeどっちが無難？


無難という文言に何を期待しているのかわかりませんが

チェックしていませんが、その「 `UNICODE` を使う」の意味が

  * Client - Server 間の通信に `UNICODE` を使う
  * 操作員（人間） - Client 間の UI に `UNICODE` を使う

で異なるでしょう。

前者ならば事前にエンコーディング設定値を取り交わせばよいだけなので差はないから、こっちとは考えにくい。  
後者なら、日本語 Windows のコマンドプロンプトは何も設定しなければ UI に `CP932` を使うので `MySQL Command Line
Client - Unicode` だと `CP932` なコンソール上で `UNICODE` を使うことになって文字化けします。

逆に、今後は UI として `UNICODE` (っつか `UTF-8` なり `UTF-16` なり) に移行していくであろうことをにらんで今すぐに
`UNICODE` 側を使うほうが将来性はあるかもしれないです。

`UNICODE` にあって `CP932` にない文字（デーヴァナーガリー文字とかタイ文字とか絵文字とか) を使うことが想定されるのであれば
`UNICODE` が必須となりますが、コンソールの設定とかフォントの設定とか、環境整備がきっちりできないと実用するのは難しそうです。


CC BY-SA 4.0
2023-10-03T23:28:03.750
96416
2023-10-03T23:28:03.750
8589
96392
answer
  
  
以下の MySQL のドキュメントの「Unicode Support on Windows」というセクションに説明があります。

4.5.1.6 mysql Client Tips  
<https://dev.mysql.com/doc/refman/8.0/en/mysql-tips.html>

MySQL command line client - Unicode で、Windows のコンソールがサポートしている UTF-16LE
が使えるようになるということらしいです。

具体的にどういうことかというと、自分が試した限りの話ですが、例えば以下のようなテーブルが MySQL にあるとすると、

[![画像の説明をここに入力](https://i.stack.imgur.com/8aQWN.jpg)](https://i.stack.imgur.com/8aQWN.jpg)

ちなみに、最後の行の Title の各文字は以下の通りです。

あ : Shift_JIS にあります  
丂 : 0x4E02、BMP には含まれるが Shift_JIS にはありません  
: サロゲートペア  
: サロゲートペア  
‍ : と を ZeroWidthJoiner (0x200D) で連結

MySQL command line client の場合は以下のようになります。Shift_JIS 以外は認識してくれないようです。

[![画像の説明をここに入力](https://i.stack.imgur.com/UXQFi.jpg)](https://i.stack.imgur.com/UXQFi.jpg)

MySQL command line client - Unicode の場合は以下のようになります。 ‍ も where Title like '%〇%'
の 〇 としては有効でした。

[![画像の説明をここに入力](https://i.stack.imgur.com/ym1bA.jpg)](https://i.stack.imgur.com/ym1bA.jpg)

* * *

【追記】

上の説明より以下のように charset を調べた方が分かりやすかったと思います。

Command Line Client

[![画像の説明をここに入力](https://i.stack.imgur.com/zyh2K.jpg)](https://i.stack.imgur.com/zyh2K.jpg)

Command Line Client - Unicode

[![画像の説明をここに入力](https://i.stack.imgur.com/e89Hv.jpg)](https://i.stack.imgur.com/e89Hv.jpg)

character_set_client: クライアントが送信するステートメントの文字セット

haracter_set_connection: サーバーがステートメントを受信したあと、変換する文字セット

character_set_results: サーバーがクライアントにクエリー結果を返信するときに使用する文字セット


CC BY-SA 4.0
2023-10-04T04:58:40.180
96419
2023-10-05T04:09:01.040
2023-10-05T04:09:01.040
51338
51338
96392
answer