0

データベースのテーブルに挿入するときに問題があります。実行中のサーバーは Ubuntu です。

ディストリビューター ID: Ubuntu 説明: Ubuntu 12.04.2 LTS リリース: 12.04 コードネーム: 正確

次の方法で、1 つのテーブルを持つデータベースを作成しました。

データベースの作成 mysql>データベースの作成 test1234 CHARACTER SET latin1;

テーブルの作成 mysql>テーブルの作成 testtbl (test varchar(22) CHARACTER SET latin1);

Insert mysql>insert into testtbl (テスト) 値 ('asdsdaæø');

セレクター: mysql> select * from testtbl;

+--------------------+
| テスト |
+--------------------+
| | |
| | アスズダ |
| | ᦦøå |
| | ᦦøå |
| | asdadsã¦Ã¸Ã¥ |
+-------------+
5 行セット (0.00 秒)

mysql Ver 14.14 Distrib 5.5.29、readline 6.2 を使用する debian-linux-gnu (x86_64) 用

接続 ID: 427
現在のデータベース: test1234
現在のユーザー: root@localhost
SSL: 使用されていません
現在のページャー: stdout Outfile の使用
: ''
デリミタの使用: ;
サーバーのバージョン: 5.5.29-0ubuntu0.12.04.2-log (Ubuntu)
プロトコルのバージョン: 10
接続: UNIX ソケット経由のローカルホスト
サーバーの文字セット: latin1 データベースの文字セット
: latin1
クライアントの文字セット: latin1 接続する文字セット
: latin1
UNIX ソケット: /var/ run/mysqld/mysqld.sock アップタイム
: 12 日 19 時間 9 分 35 秒

私もutf8で試しましたが、同じ結果でした。

/var/log/mysql/mysql.log から
130421 18:03:06 427 testtbl (テスト) 値 ('asdads') へのクエリ挿入 130421 18:03:08 427 クエリ select * from testtbl

私はインターネット全体の近くを検索しましたが、解決策を見つけることができませんでした。

4

1 に答える 1

0

DB データは Latin-1 ですが、UTF-8 を実行しているブラウザー/SQL クライアントを使用している可能性があります。

文字エンコーディングを扱う場合、データソースから画面までのすべてのステップで同じエンコーディングが使用されていることを確認する必要があります。これも:

  • データベースに送信されるデータのエンコード
  • データベースのエンコーディング
  • データベースから読み取るファイル/スクリプトのエンコード

エンドポイントが Web ページの場合:

  • HTTP ヘッダーに設定されたエンコーディング
  • メタタグに設定されたエンコーディング
  • Web ブラウザーのエンコード設定 (HTTP ヘッダー/メタ タグに一致するように自動的に設定されます)

latin1 を実際に使用する必要がない場合は、常に UTF-8 を使用することをお勧めします。UTF-8 はあらゆる場所でますます標準になりつつあり、ほとんどのアプリケーションは UTF-8 を標準として使用しています。

于 2013-04-21T16:19:19.333 に答える