標準の MySQL インポート エンコーディングの問題がありますが、解決できないようです。
私のクライアントは、WordPress のインストールをしばらく実行していました。データベースをファイルにダンプし、ローカルにインポートしました。結果のページには、全体に � 文字が飛び散っています。
私は両側でデータベースのプロパティを調べました: production: show create database wordpress;
CREATE DATABASE `wordpress` /*!40100 DEFAULT CHARACTER SET latin1 */
ローカル: データベース ワードプレスの作成を表示します。
CREATE DATABASE `wordpress` /*!40100 DEFAULT CHARACTER SET latin1 */
プロダクション: show create table wp_posts;
CREATE TABLE `wp_posts` (
`ID` bigint(20) unsigned NOT NULL auto_increment,
...
KEY `post_date_gmt` (`post_date_gmt`)
) ENGINE=MyISAM AUTO_INCREMENT=7932 DEFAULT CHARSET=utf8
local: show create table wp_posts;
CREATE TABLE `wp_posts` (
`ID` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
...
KEY `post_date_gmt` (`post_date_gmt`)
) ENGINE=MyISAM AUTO_INCREMENT=7918 DEFAULT CHARSET=utf8
� をつぶす方法についてフォーラムを読むのに何時間も費やしましたが、何も機能しません。回答の 99% は、データベース間で文字セットが一致すると述べています。次の場合はうまくいくと思います:
mysqldump --opt --compress --default-character-set=latin1 -uusername -ppassword wordpress | ssh username@anotherserver.net mysql --default-character-set=latin1 -uusername -ppassword wordpress
utf8 char-set も使用して実行しました。まだ � です。
「SET names UTF8」行にutf8またはlatin1を入れて、SQL ダンプを直接変更しようとしました。まだ � です。
奇妙な症状
これらの � 文字は、コンテンツ内のñやöなどの特殊文字の代わりに表示されることを期待していますが、通常はスペースだけが存在する場所を見てきました。また、アポストロフィ (ただし、すべてのアポストロフィではありません)、二重引用符、および商標記号の代わりにそれを見てきました。
�マークはかなり珍しいです。1 ページあたり平均 3 ~ 4 回表示されます。
Sequel Pro (ローカルまたはライブ) を使用してデータベースを表示しても、� は表示されません。Textmate で表示すると、SQL に � が表示されません。
私は何が欠けていますか?
編集
より詳しい情報:
ライブデータベースがエンコーディングをどのように認識しているかを判断しようとしました。を実行しましshow table status
たが、照合順序はutf8_general_ci,
utf8_bin and
latin1_swedish_ci` が混在しているようです。彼らは何が違うのですか?それは問題ですか?
私も走った:show variables like "character_set_database"
そして得たlatin1
;