mysqlのコンソール(のWindows->のlinux)、間違った文字セット?
質問
私はmysqlのコンソールからクエリを作成し、それがアクセントやニーズがUTF-8でエンコードされることを任意の文字を持っている場合、それが襲わ
を取得しますINSERT INTO users (userName) VALUES ("José Alarcón");
SELECT userName FROM users;
José Alarcón
パラメータは何も変化しないように、 SET NAMES utF8
は何も--default-character-set=utf8
を変更します
これが唯一のコンソールからであるよりも、覚えておいてください。私はphpMyAdminのを使用するか、プログラムから任意のクエリを作成する場合は、そこに全く問題はありませんが、コンソールから挿入された行はmuggledます。
私はクライアントとしてWindows上でパテを使用しています。
~$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
の明確化: ミローカルコンピュータは、WindowsのXPである私は、ターミナルクライアントとしてパテ0.60を使用しています。 MySQLが実行されているターゲットシステムは、Debian Linuxのです 私は文字エンコーディング用のパテで任意の構成を見つけることができません...
更新:愚かなパテ、WTF
「翻訳」と呼ばれるメニュー内の符号化構成を有します?解決
設定PuTTYを - 。>翻訳「受信したデータに文字セット」
他のヒント
Windowsは、コンソールとシステムメッセージ(パテ用途)でUTF8を処理することはできません。それはあなたのロケールのコードページを使用することを望んでいます。これは、一般的な既知の問題であり、それはCMD.EXEを書き換え、または別のコマンドラインツールを使用せずに解くことができないのです。
Microsoftは本当に自分の世界の外のエンコーディング、変なウィンドウ内の結果、特定のコードセットについては気にしたことがありません。
それは少なくとも、mysqlのCLI?に正しく通信できるように、たぶん、あなたはそのオプションでパテエンコードどこかを変更することができます
あなたのターミナルクライアントには、UTF8を使用して設定する必要があります。サーバー上のシェル環境もUTF8に設定する必要があります。あなたは、次のコマンドでそれをチェックアウトすることができます。
locale
これは、システムが必要な場合は、ロケール情報を修正する方法を好むか(私はLinuxを使用していると仮定している)分布に依存します。例えば、Debianの(と、私は推測する、Ubuntuの)ロケール設定を再設定するには、次のコマンドを使用するかを尋ねます。
dpkg-reconfigure locales
お知らせ。私は、彼らがこれを変更したかどうかわからないんだけど、しばらくそれをテストしていません。 : - )
もちろん、シェルにあなたがでたり、プロファイルにログインするたびに、ロケールを設定することができます。私はあなたが(あなたがすべての後にそれを行う必要がある場合: - )それを行うには配布のメソッドを使用することをお勧めします。)