2010-12-04 24 views
0

同じDEFAULT CHARSET = latin1の2つのテーブルがあります 'Insert into()Select()'コマンドを使用してあるテーブルから別のテーブルにデータをコピーすると、 、MySqlは文字列をエンコードします。 例:MySql 5.1.x:select ..エンコード文字列に挿入

2461/P/J- -- RESO N° RM10はどのようにこの問題を回避することができます2461/P/J- -- RESO N° RM10 ノート°

°からの変換になりましたか?アドバイスで tnx

答えて

0

私は試しても起こりません(MySQL 5.1.41)。これはMySQLコンソールから直接行っていますか、おそらくMySQL API経由で(おそらくPHPから)実行していますか?

例:

CREATE TABLE `src` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `data` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1; 

CREATE TABLE `dst` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `data` varchar(255) DEFAULT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT CHARSET=latin1 

INSERT INTO src (data) VALUES ('2461/P/J- -- RESO N° RM10'); 

SELECT * FROM src; 
+----+----------------------------+ 
| id | data      | 
+----+----------------------------+ 
| 1 | 2461/P/J- -- RESO N° RM10 | 
+----+----------------------------+ 

INSERT INTO dst SELECT * FROM src; 

SELECT * FROM dst; 

+----+----------------------------+ 
| id | data      | 
+----+----------------------------+ 
| 1 | 2461/P/J- -- RESO N° RM10 | 
+----+----------------------------+ 
+0

mike!私もこのテストを試してみて、それはパスします。でも...私のテーブルでは何が起こるのですか? Hmmm私のテーブルを使ってあなたのサンプルを再試行し、エラーは起こらない! テーブルは非常に古いです(mysql 4.0.xで始まったデータベースから来ています)...私は問題が最も古い行にあると思われ始めています:おそらく別のエンコーディングですか? – PadovaBoy

+0

ok別の奇妙なことが起こる:私は問題のある行の1つだけをコピーしようとします...そして今度はエンコーディングは起こりません!私はすべての行をコピーするときのみ。同じクライアントとコンテキスト(Windows用のsqlyog) – PadovaBoy

0

あなたは元のテーブル内のデータを確認することはできますか?あなたが文字セットのエンコードの問題を抱えていたなら、あなたはHTMLのエンタテイではなく、ガジェットの文字などを見るでしょう。あなたの例が示すように、MySQLはHTML/XMLエンティティとの間で変換しません。

+0

実際に!私はmysqlから期待できるが、 'html変換'はできない(これは私がここにいる:) – PadovaBoy

関連する問題