2011-10-30 9 views
4

utf8にphpnukeサイトのダンプファイルがあります。私は新しいサーバーでこのサイトを再開しようとしています。しかし、核はlatin1を使用します。 このutf-8ダンプファイルを使用してlatin1データベースを作成する方法が必要です。 私は考えることができるすべてを試みました。 iconv、mysql replace、php replace ...import utf-8 mysqldumpをlatin1データベースに変更

+0

ダンプファイルはUTF-8でエンコードされており、すべての文字がUTF-8で正しく表示されます。ちょうどlatin1データベースに保存したいのですか?また、文字はすべてlatin1と互換性があります(つまり、すべての文字をlatin1でエンコードできます)。 – deceze

+0

これはまさに私が欲しいもので、その状況です。 – hctopcu

答えて

2

ダンプの先頭にSET NAMES 'utf8';ステートメントを追加します。 これは、受け取るコマンドがUTF8であることをMySQLに示します。 テーブルが現在設定されている文字セットにデータを格納します。この場合、データベースがlatin1の場合、データはlatin1に格納されます。 http://dev.mysql.com/doc/refman/5.0/en/charset-connection.htmlから

セット名は、文字は、クライアントがサーバにSQL文を送信するために使用する設定したものを示しています。したがって、SET NAMES 'cp1251'はサーバーに「このクライアントからの今後の着信メッセージは文字セットcp1251にあります」と伝えます。また、サーバーが結果をクライアントに返すために使用する文字セットも指定します。たとえば、SELECT文を使用すると、列の値に使用する文字セットが示されます。

最後に、latin1はutf8よりもはるかに少ない文字しか使用できません。西欧言語以外の言語では、データが失われます。

たとえば、列testがlatin1であると仮定します。最初のエントリは正しく表示されます(フランス語のアクセントはlatin1の範囲内です)。韓国語の2番目の入力は疑問符として表示されます。

SET NAMES 'utf8'; 
INSERT INTO TESTME(test) VALUES ('Bienvenue sur Wikipédia'); 
INSERT INTO TESTME(test) VALUES ('한국어 위키백과에 오신 것을 환영합니다!'); 
関連する問題