文字コード

文字コードを調べる

SHOW VARIABLES LIKE 'character%';

文字コードの設定

phpMyAdmin?がインストールされている環境でGUIベースで作業する場合、

新規データベース作成の際に照合順序で"utf8_general_ci"を選択すれば自動的にCHARACTER SETには"urf8"が設定される

CREATE DATABASE sample DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE sample CHANGE sample_name sample_name VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;

Mysql4.1のEUCで設定されている環境の中にUTF-8のDBを作る

CREATE DATABASE `hogehoge` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

文字コード設定

SET NAMES
SET CHARACTER SET

文字コードを設定してDBを作成

CREATE DATABASE zf CHARACTER SET utf8;

DB作成後に、文字コードを指定する場合

ALTER DATABASE zf default character set=utf8;

PHP+MySQL+phpMyAdmin?で文字化け

DBをUTF-8に設定。コンソールからSELCTしても、phpMyAdmin?で見ても文字化けしてないのに、PHPで取得すると文字化けする。

解決策1

以下のように、my.cnfにinit-connectを追記して解決。

[mysql]
default-character-set = utf8
[mysqld]
default-character-set = utf8
init-connect=SET NAMES utf8
[mysqldump]
default-character-set = utf8

解決策2

my.cnfの[mysqld]の項に以下のような感じで一行追加。

[mysqld]
skip-character-set-client-handshake

ちなみに「skip-character-set-client-handshake」は、 『サーバーの文字コード設定をクライアントでもそのまま使う』という意味。

mysqldumpで文字化け

DB は特に何もせずデフォルトのままで使用していて、mysqldumpを行ったら文字化けが起こりました。

文字化けの起こしたmysqldump

mysqldump -u root -h 000.000.00.00 DB名 -p > dump200709051512.sql
mysqldump --default-character-set=utf8 -u root -h 000.000.00.00 DB名 -p > dump200709051512.sql

確認

以下のように、文字コードがdatabase以外latin1になっていました。

ちなみに、MySQL の 4.1 は、デフォルトで使用すると、ほとんど全ての文字コードが「latin1」となります。

SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |

mysqldumpがデフォルトでは、文字コードをUTF-8で出力するようになっていて「latin1」をむりやり「utf-8」に変更しようとして、文字化けを起こしているようです。

解決策

mysqldump --default-character-set=latin1 -u root -h 000.000.00.00 DB名 -p > dump200709051512.sql
秀丸などの「latin1」に対応したテキストエディタでで開く
↓
文字コードを「latin1」に変更し、一旦保存する
↓
文字コードを「utf8」に変更して開きなおす


Comment

  • やっとまとまったReviewできるサイトにたどりついたという感じです。 感謝感謝。 -- yiyi? 2009-05-29 (金) 19:41:22
  • statusで見ると「Db characterset:latin1」となっており、文字が?となってしまいます。 -- inoue? 2011-05-17 (火) 14:24:16
  • test -- test? 2011-06-30 (木) 22:55:07
  • test -- test? 2011-06-30 (木) 22:56:36
  • たすかりました。 -- blog.gjm.click? 2015-11-30 (月) 11:44:25
  • I like what you guys are up too. Such smart work and reporting! Carry on the excellent works guys Ive incorporated you guys to my blogroll. I think it'll improve the value of my website ggebbeeccbdd -- Johnc279? 2016-08-25 (木) 13:16:46
  • Very nice site! -- Pharmd928? 2016-08-26 (金) 06:46:44
  • Very nice site! -- Pharme673? 2016-08-27 (土) 12:56:54
  • Very nice site! -- Pharmd197? 2016-08-28 (日) 19:01:38
  • Very nice site! -- Pharmd111? 2016-08-30 (火) 02:01:41
  • Very nice site! -- Pharme735? 2016-08-31 (水) 08:13:11
  • Very nice site! -- Pharmd836? 2016-09-01 (木) 14:30:12
  • Very nice site! -- Pharmg4? 2016-09-02 (金) 20:43:16


Counter: 42976, today: 1, yesterday: 0

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-09-02 (金) 20:43:16 (295d)